在我的网站中,我有一些跨域请求,有时候会有HTTP 302响应。
我想做两件事情:
随着url后跟url(多个API),我做了这样的事情:
http://myproxyurl.com?service=http://myapi.com (用myapi.comurl编码)
这是我的代理虚拟主机:
<VirtualHost *:80> DocumentRoot "C:/..." ServerName http://myproxyurl.com Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS" Header always set Access-Control-Max-Age "1000" Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" RewriteEngine on RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L] RewriteCond %{QUERY_STRING} ^service=(.*) RewriteRule (.*) $1 [R,L] </VirtualHost>
但有了它,我已经像Chrome一样在Chrome上redirect循环: Chromenetworking标签屏幕截图
我怎样才能解决这rediect循环? 我打开比“?service =”更好的解决scheme,如果有的话。
感谢帮助。
编辑:新的Vhost conf
与: 查询string替代的Mod-proxy? 我接近解决scheme…但仍然得到一个代码500
<VirtualHost *:80> LogLevel alert rewrite:trace8 DocumentRoot "C:/..." ServerName myproxyurl.com Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS" Header always set Access-Control-Max-Age "1000" Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" AllowEncodedSlashes On RewriteEngine on RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L] RewriteMap unescape int:unescape RewriteCond %{QUERY_STRING} ^service=(.*)$ RewriteRule ^/ ${unescape:%1} [P,L] </VirtualHost>
最后的VHOST:
<VirtualHost *:80> DocumentRoot "C:/..." ServerName myproxyurl.com Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS" Header always set Access-Control-Max-Age "1000" Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" RewriteEngine on RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L] RewriteMap unescape int:unescape RewriteCond %{QUERY_STRING} ^service=(.*)$ RewriteRule ^/ ${unescape:%1} [P,NE,R=302,L] </VirtualHost>
不知道是否所有这些线/标志是必需的,但是,我得到的结果!
你必须启用这些Apache模块:
很高兴知道 :我读了这个方法是不安全的,因为任何人都可以在服务参数中放置任何URL …在我的情况下,我可以信任用户。