2
|
James Lawruk · 技术社区 · 15 年前 |
1
4
我进一步研究了这个问题,相信我知道是什么导致了这个问题:一个HTTP客户机正在向服务器提交一个未正确编码URL的URL。具体来说,URL中有一个无效字符。
要重新打印,请将以下内容粘贴到IE8的URL末尾:
如果检查通过线路的字节(例如使用 Fiddler ,您将看到一个实际的十六进制B4字符正在从客户机发送到URL中的服务器。这是URL中的非法字符,因为URL被限制为0x80以下的字符代码(任何大于0x80的字符代码都必须进行百分比转义)。 因此,您的客户机正在传入一个无效字符,而您的服务器正在(正确地)用%ef%bf%bd替换伪字符,该字符是 Unicode Replacement Character (U+0FFD) ,当遇到在本地编码中没有等效字符时会发生这种情况。 afaik,这是IE中的一个bug。如果您在firefox中键入相同的URL,firefox将正确地对该URL进行编码(用%b4代替_)。请注意,同样是afaik,只有在手动将无效字符粘贴到IE的地址栏时才会出现问题——如果链接中存在相同的字符,则IE似乎正确编码了URL(至少在我测试的情况下)。 所以你应该弄清楚是谁在向你发送这个伪造的URL,并告诉他们开始正确地编码他们的URL! |
2
1
ASP.NET将在您请求时自动对内容进行URL解码。querystring[“key”]。你只需要重新编码。
|
3
0
将返回原始查询字符串 |
4
0
我也有同样的问题。我只是在构造查询字符串时添加了javascript“escape('text%text')”来解决这个问题! |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |