Я спрашиваю это здесь как последнее прибежище после попытки разных вещей / выяснение у 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), делает.
Я попытался добавить различные правила для применения "междоменной" переменной среды к sources.json URL без успеха. Например:
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]
... желаемый заголовок появляется в заголовках ответа, хотя я не хочу, чтобы заголовок был применен ко всему, что использует те параметры запроса, это был бы неправильный поступок.
Вы можете сделать это со следующим условием:
RewriteCond %{REQUEST_URI} ^/video/player/sources.json$
RewriteCond %{QUERY_STRING} !=""
RewriteRule . - [E=crossdomain:1]
YMMV и может потребоваться некоторая подстройка для работы с другими правилами, но это путь.