Web服务 – IE10中查询字符串参数的编码

前端之家收集整理的这篇文章主要介绍了Web服务 – IE10中查询字符串参数的编码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我收到一个客户的请求,希望能够使用IE10地址栏中的参数输入我的Web服务的查询字符串并获取服务结果.参数包括希伯来语中的字符串,如:
http://mywebsite.com/service.asmx/foo?param1=123&param2=מחרוזתבעברית

对我来说,IE10与其他(普通)浏览器不同,不会对查询字符串参数进行编码 – 每个非ansi字符都会随后发生.标记将被转为’3f’字节,尽管它确实编码了什么?标记 – 网址本身.

例如,如果我尝试达到url(参数是虚构的,url不是,我没有与该网站的连接)

http://www.shlomo.co.il/pageshe/sales/רכב-למכירה.asp?param=פאראם

然后在wireshark看我发送到服务器的字节,它显示了我

您可以看到它用urlencoded字符串替代了URL的希伯来语部分,但用“3f”代替了希伯来语参数.

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中是否有任何设置可以启用参数编码.

附:如果我正在开发客户端/网络ui,我只是urlencode我的查询,但我的客户请求正是将查询粘贴到IE地址栏,这就是为什么我对这个具体行为感兴趣.

谢谢.

解决方法

是的,你对行为的观察是准确的. Internet Explorer 10及以下版本遵循用于对URL进行编码的复杂算法.据说这是在Internet Explorer 11中更新,但是我发现新的选项 doesn’t seem to work.

“始终显示编码地址选项”涉及PunyCode是否显示为IDN主机名,并且不会影响查询字符串.发送UTF-8 URL主要适用于路径的编码,尽管它也可能影响其他的编程

行为没有完全记录在任何地方.我想在IEInternals博客上写一个完整的帖子,但是在这样做之前最终还是从微软开始. this blog post有部分解释.

是的,有影响行为的设置.在工具>中发送UTF-8 URL复选框互联网选项>高级是确定URL发送方式的变量之一,但是该选项并不会盲目地执行它的意思(只有UTF-8编码路径,而不是查询字符串).涉及的其他变量包括

> URL的输入地址(例如地址栏对开始>运行等)
>系统的ANSI代码页是什么(例如,操作系统默认使用的语言环境)
>浏览器中当前加载的页面的字符集

作为这些变量的结果,您无法在Internet Explorer中可靠地使用未正确编码的URL(例如,%转义的UTF8).

猜你在找的HTML相关文章