Установите заголовок Access-Control-Allow-Origin для определенного URL-адреса со строкой запроса
Я спрашиваю это здесь в качестве крайней меры после попытки разных вещей / спрашивая Google / чтение http://httpd.apache.org/docs/2.2/
У меня есть следующее в моем apache2.conf
# Allow cross domain fonts
RewriteCond %{REQUEST_URI} (ttf|otf|eot|woff|svg) [OR]
RewriteCond %{QUERY_STRING} (ttf|otf|eot|woff|svg)
RewriteRule .* - [E=crossdomain:true]
# Cross domain videoplayer config
RewriteRule ^/video/player/config.json - [E=crossdomain:1]
# Cross domain for fragments
RewriteCond %{QUERY_STRING} fragment=true
RewriteRule .* - [E=crossdomain:1]
# Set header
Header set Access-Control-Allow-Origin "*" ENV=crossdomain
Все это прекрасно работает. Теперь я хотел, чтобы URL-адреса, такие как следующие, имели
Access-Control-Allow-Origin "*"
... заголовок также:
/video/player/sources.json?contentId=AVID20150102_0012&width=640&height=360
Как вы можете сказать, такой URL-адрес практически идентичен указанному в строке выше:
RewriteRule ^/video/player/config.json - [E=crossdomain:1]
С (может быть) важным отличием - тот (config.json) не использует строки запроса, а этот (sources.json) делает.
Я попытался добавить другие правила, чтобы применить переменную среды "crossdomain" к URL-адресу sources.json, но безуспешно. Например:
RewriteCond %{REQUEST_URI} ^/video/player/sources.json [NC]
RewriteCond %{QUERY_STRING} ^contentId=(.*)&width=(.*)&height=(.*)
RewriteRule .* - [E=crossdomain:1]
Что, на мой взгляд, должно быть правильным (но поскольку это не работает, я ошибаюсь).
Я думаю, что проблема может быть связана с%{REQUEST_URI}, так как, когда я использую это:
RewriteCond %{QUERY_STRING} contentId
RewriteCond %{QUERY_STRING} width
RewriteCond %{QUERY_STRING} height
RewriteRule .* - [E=crossdomain:1]
... нужный заголовок появляется в заголовках ответа, хотя я не хочу, чтобы заголовок применялся ко всему, что использует эти параметры запроса, это было бы неправильно.
1 ответ
Вы можете выполнить это с помощью следующего условия:
RewriteCond %{REQUEST_URI} ^/video/player/sources.json$
RewriteCond %{QUERY_STRING} !=""
RewriteRule . - [E=crossdomain:1]
YMMV и может потребоваться некоторые настройки для работы с другими правилами, но это так.