gpt4 book ai didi

web-services - IE10中查询字符串参数的编码

转载 作者:行者123 更新时间:2023-12-03 13:27:57 24 4
gpt4 key购买 nike

我收到一个客户的请求,他希望他能够在IE10地址栏中输入带有参数的Web服务的查询字符串,并获得服务结果。参数包括希伯来语中的字符串,例如:

http://mywebsite.com/service.asmx/foo?param1=123&param2=מחרוזתבעברית


在我看来,IE10不会对查询字符串参数进行编码-在?之后的每个非ASCII字符。标记将变成“ 3f”字节,尽管它确实对?之前的内容进行了编码。 mark-网址本身。

例如,如果我尝试访问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中是否有任何启用参数编码的设置。


ps。当然,如果我正在开发客户端/ Web ui,则只需对查询进行urlencode,但是客户的要求恰恰是将查询粘贴到IE地址栏中,这就是为什么我对此特定行为感兴趣。

谢谢。

最佳答案

是的,您对行为的观察是准确的。 Internet Explorer 10及更低版本遵循用于URL编码的复杂算法。据称这是在Internet Explorer 11中更新的,但是我发现新选项doesn't seem to work

“始终显示编码的地址选项”涉及是否为IDN主机名显示PunyCode,并且不影响查询字符串。 Send UTF-8 URLs通常适用于路径的编码,尽管它也会影响其他代码路径

该行为在任何地方都没有得到充分记录。我原本打算在IEInternals博客上写一篇完整的文章,但最终在这样做之前离开了Microsoft。 this blog post中有部分解释。

是的,有些设置会影响行为。 “工具”>“ Internet选项”>“高级”中的Send UTF-8 URLs复选框是确定如何发送URL的变量之一,但是该选项不会盲目地执行其含义(它仅UTF-8编码路径,而不是查询字符串)。涉及的其他变量包括:


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


由于这些变量,您不能可靠地使用Internet Explorer中未正确编码的URL(例如,%转义的UTF8)。

关于web-services - IE10中查询字符串参数的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18220057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com