[▲前のスレッド]

[26689] URLの"?"以降が反映されない 
2005/2/12 (土) 11:13:41 ボブ
p3209-ipbf413marunouchi.tokyo.ocn.ne.jp / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
InternetExplorer(6SP1)でメールのリンクをクリックすると、
IEで指定したメーラーが立ち上がり、mailtoで指定したアドレスや
body以降の本文が反映されますよね。

そこにあるURLが指定されていました。

http://….jsp?id=…

このような形のURLで、OutlookExpressだと全く問題はないのですが、
Becky!だと"?"以降が反映されません。

Becky!で、こういった現象を回避させる方法はありますか?
教えてください。

ちなみに、.jspではなく.cgiだと問題がないようです。
ただOutlookExpressに出来て、Becky!2に出来ないのが
悔しくて…
バージョンは2.12.01(ja)です。

どうぞ宜しくお願いします。

[26697] Re:URLの"?"以降が反映されない 
2005/2/13 (日) 02:20:49 Shusaku
ntkngw029214.kngw.nt.adsl.ppp.infoweb.ne.jp / Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
▼ ボブさん
> このような形のURLで、OutlookExpressだと全く問題はないのですが、
> Becky!だと"?"以降が反映されません。

えーと、リンクが↓このような形になっていたわけですね?

mailto:foo@example.com?body=http://www.e
xample.com/index.jsp?id=xyz

rfc2368(The mailto URL scheme)によれば、
本来は特殊な意味を持つ '?' の出現は1回しか許されません。
宛先(To)を指定する前半部分とそれに続く後半部分とを分離する
重要な役割があるので、'?' を別の意味、このケースで言えば
http scheme でのPOSTデータを指定する意味で使うには、
その文字を URL encode して '%3f' に置換する必要があります。
そうすると↓このようになります。

mailto:foo@example.com?body=http://www.e
xample.com/index.jsp%3fid=xyz

こうなっていれば、Becky! でも2つ目の '?' 以降を認識します。
body=... の部分を本文に流し込む段階で decode されるからです。

> Becky!で、こういった現象を回避させる方法はありますか?

回避方法としては、Becky! に文字列が渡される前に割り込んで、
'?' を変換してから渡す処理を中間に噛ませれば出来そうですが、
そこまでする必要は無さそうですよね?

> ちなみに、.jspではなく.cgiだと問題がないようです。
> ただOutlookExpressに出来て、Becky!2に出来ないのが
> 悔しくて…

ウェブサーバーに接続する前の、メーラーが処理する段階ですから、
拡張子の違いで挙動が変わるようなことはちょっと考え難いです。
'.cgi?' のほうは正しく %3f に処理されていて、'.jsp?' のほうだけ
エンコード処理が無かったとかではないでしょうか?

OutlookExpressで出来てしまうのは、まぁ、しょうがないですよ。
少しくらい標準から外れていても何とか解釈して対応してしまう、
ある意味でお節介(厄介?)なソフトですから。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.84