Набор 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), делает.

Я попытался добавить различные правила для применения "междоменной" переменной среды к 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]

... желаемый заголовок появляется в заголовках ответа, хотя я не хочу, чтобы заголовок был применен ко всему, что использует те параметры запроса, это был бы неправильный поступок.

1
задан 10 March 2015 в 20:50
1 ответ

Вы можете сделать это со следующим условием:

RewriteCond  %{REQUEST_URI}  ^/video/player/sources.json$
RewriteCond  %{QUERY_STRING} !=""
RewriteRule  . - [E=crossdomain:1] 

YMMV и может потребоваться некоторая подстройка для работы с другими правилами, но это путь.

0
ответ дан 4 December 2019 в 07:57

Теги

Похожие вопросы