我在Apache服务器中托管了一些rest (一个典型的xampp包)。
当我使用http方法攻击资源时(不管是: put、post、get.)而URL包含编码的冒号%3A,服务器有时会回复403个错误。它似乎取决于服务器的文件夹结构。如果存在一个现有文件夹,而您的url攻击该文件夹中包含%3A的资源,则服务器将返回403。当它不包含%3A时,它会像它应该返回的那样返回404。
像这样的结构:
htdocs/apis/userContext
htdocs/apis/subscriptions
http://localhost/apis/userContext/users/tel%3A2032342349 Works (returns 404 not found, because users doesn't exist)
http://localhost/apis/userContext/tel%3A2032342349 Doesn't work (returns 403)
http://localhost/subscriptions/tel%3A2032342349 Doesn't work (returns 403)
http://localhost/nonexistingfolder/tel%3A2032342349 works (returns 404, becasue nonexistingfolder doesn't exist)
这很烦人,因为urls中将要出现的许多值都是telURIs,如下所示
tel:+34678678678
所以,请不要告诉我不要在那里使用冒号,因为这根本不可能。我怎么才能解决这个问题?
发布于 2017-03-31 13:27:45
我只能找到一个关于这个的有效信息(从2006年10月开始)- 这里。
很明显,这个错误并不出现在Linux上,而是发生在Windows平台上。根据消息来源,短名称(后面跟着冒号(:)可以解释为驱动器名(原因是什么以及为什么文件://不表示--我不知道)。
我必须解决这个问题,但我可以自己设置链接(不知道你是否有奢侈品)。我的解决办法是:
urlencode($uri) → urlencode(strtr($uri, ":", "_"))
SELECT ... FROM ... WHERE uri = REPLACE(@@uri, ":", "_")
)之后搜索那些URIhttps://stackoverflow.com/questions/26672560
复制相似问题