HTTP应用程序接受包含未编码的特殊字符的查询字符串是否正确,对于具有特殊字符编码的等效URL是否失败?

时间:2014-01-08 13:54:34

标签: url url-encoding

我遇到过这样一种情况:GET请求一个URL,其中查询字符串包含未编码的特殊字符,返回200 OK该URL的原样但返回400 Bad Request时特殊字符是url编码的。

此类网址的简化示例为:http://example.com/??foo/bar+foobar

请注意双重问号,以便整个查询字符串是具有空值的单个键值对。

对查询字符串键进行URL编码可以得到:http://example.com/?%3Ffoo%2Fbar+foobar

对包含已编码字符的此网址的GET请求将返回400 Bad Request

处理这些URL的应用程序(我无法控制的第三方)似乎不喜欢查询字符串键包含url编码的非字母数字字符等价物。

我假设http://example.com/??foo/bar+foobarhttp://example.com/?%3Ffoo%2Fbar+foobar应该是等价的,因此可以互换。这可能是一个无效的假设。

这两个网址是否相同,因此可以互换?

是不是因为没有将这些URL视为等效而处理这些URL的应用程序,或者是我的应用程序,即应用url-encoding来查询字符串键和值,是否应用此类编码有错误?

0 个答案:

没有答案