我有一个url内部应用程序,我用下面的url调用它,其中包含一个参数。
http://127.0.0.1:8888/?0001=„V‡&当我在IE11中输入URL时,它将被转换为以下内容。
http://127.0.0.1:8888/$/?0001=%EF%BF%BD%EF%BF%BDV%EF%BF%BD它在Chrome和Opera中工作,将原始形式的参数传递给应用程序。有什么办法阻止IE11转换参数吗?
我使用的是IE11、Delphi10.1柏林和InterWeb14.0.53。
发布于 2016-05-19 21:54:10
像„和‡这样的非ASCII字符不允许在RFC 3986中显示未编码的字符( IRI通过RFC 3987允许,但HTTP不使用IRIs)。某些ASCII字符也保留为分隔符,当用于字符数据时,不能显示未编码的字符。
他在做正确的事情。在传输URL之前,受限制的字符必须被字符集编码为字节(IE使用UTF-8,没有办法让URL指定使用的字符集),然后字节必须以%HH格式编码百分比。
then服务器将反转此过程以获得原始字符--将%HH序列转换为字节,然后将字节解码为字符。浏览器和web服务器必须就所使用的字符集达成一致。经常使用UTF-8,但并不总是使用.一些外国服务器可能会使用它们自己的地区。
这是URL和HTTP规范的一部分。所有的web服务器都需要识别和解码百分比编码序列.
Chrome和Opera应该在网络层做IE正在做的同样的事情,即使他们没有更新他们的UI来反映它。您可以使用包嗅探器(如威克鲨或费德勒 )来验证每个浏览器到底在向web服务器发送什么。
发布于 2016-05-19 11:18:35
根据这篇文章,编码查询字符串似乎是唯一的答案。
https://stackoverflow.com/questions/37303976
复制相似问题