【发布时间】:2013-08-13 22:08:24
【问题描述】:
我收到一位客户的请求,他希望能够在 IE10 地址栏中输入带有参数的 Web 服务的查询字符串并获取服务结果。参数包括希伯来语字符串,如:
http://mywebsite.com/service.asmx/foo?param1=123¶m2=מחרוזתבעברית
在我看来,IE10 不会对查询字符串参数进行编码——在 ? 之后的每个非 ASCII 字符。标记将转换为“3f”字节,尽管它确实对 ? 之前的内容进行了编码。 mark - url 本身。
例如,如果我尝试访问url(参数是虚构的,url不是,并且我与站点没有任何联系)
http://www.shlomo.co.il/pageshe/sales/רכב-למכירה.asp?param=פאראם
并在wireshark中查看我发送到服务器的字节,它显示了我
您可以看到它确实将 URL 的希伯来语部分替换为 urlencoded 字符串,但将希伯来语参数替换为 ?????,即 '3f's。
chrome 中的相同字符串将被完整编码:
GET http://www.shlomo.co.il/pageshe/sales/%D7%A8%D7%9B%D7%91-%D7%9C%D7%9E%D7%9B%D7%99%D7%A8%D7%94.asp?param=%D7%A4%D7%90%D7%A8%D7%90%D7%9D HTTP/1.1
我在win7/IE10和winXPheb/IE8的机器上试过了。
我的 IE 设置是(特别是检查了“始终显示编码地址选项”以查看它是否有帮助并重新启动,但没有任何区别):
我试图四处搜索有关该问题的任何信息,但没有找到太多信息。
我的问题是:
- 确实是这样,还是我遗漏了什么?
- 此行为是否记录在任何地方?
- IE/Win中是否有启用参数编码的设置。
附言当然,如果我正在开发客户端/Web ui,我会简单地对我的查询进行 urlencode,但我的客户请求正是将查询粘贴到 IE 地址栏,这就是我对这种特定行为感兴趣的原因。
谢谢。
【问题讨论】:
标签: web-services internet-explorer url encoding