На моем веб-сайте у меня есть междоменные запросы с иногда ответами HTTP 302.
Я хочу сделать две вещи:
Поскольку URL-адреса для получения и публикации различны (несколько API), я сделал что-то вроде этого:
http://myproxyurl.com?service=http://myapi.com (с закодированным URL myapi.com)
Вот мой прокси-хост:
<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
Как я могу исправить этот повторный цикл? Я открыт для лучшего решения, чем "? Service =", если таковое имеется.
Спасибо за помощь.
РЕДАКТИРОВАТЬ: New Vhost conf
С участием : Мод-прокси с альтернативами строки запроса? Я близок к решению ... но все равно получаю код 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-адрес в параметр службы ... в моем случае я могу доверять пользователям.