我目前正在尝试将 URL 放入 URL 中。例如:
http://example.com/url/http%3A%2F%2Fwww.url2.com
我知道我必须对 URL 进行编码,我已经这样做了,但现在我得到了404
从服务器而不是我的应用程序返回错误。我认为我的问题出在 apache 上,可以通过以下方法解决AllowEncodedSlashes On
指示。
我尝试将该指令放在 httpd.conf 的底部,但没有效果,并且不确定下一步该怎么做。我把它放在正确的地方了吗?如果是这样,有人还有其他解决方案吗?
我不断看到这篇文章是为了解决另一个问题。让我快速解释一下。
我有相同样式的 URL,并且也尝试代理它。
示例:代理请求来自/example/
到另一台服务器。
/example/http:%2F%2Fwww.someurl.com/
Issue 1:Apache 认为这是一个无效的 url
解决方案:AllowEncodedSlashes On
在 httpd.conf 中
Issue 2:Apache 解码编码的斜杠
解决方案:AllowEncodedSlashes NoDecode
在 httpd.conf 中(需要 Apache 2.3.12+)
Issue 3:mod_proxy 尝试重新编码(双重编码)改变的 URL%2F
to %252F
(eg. /example/http:%252F%252Fwww.someurl.com/
)
解:在httpd.conf
使用ProxyPass
关键词nocanon
通过代理传递原始 URL。
ProxyPass http://anotherserver:8080/example/ nocanon
httpd.conf 文件:
AllowEncodedSlashes NoDecode
<Location /example/>
ProxyPass http://anotherserver:8080/example/ nocanon
</Location>
参考:
- http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
- http://www.silverdisc.co.uk/blog/2009/02/28/url-canonicalization-and-normalization
- 无法匹配 mod_rewrite 中的 %2F
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)