Defina o Cabeçalho Access-Control-Allow-Origin para o URL específico que possui uma sequência de consulta

1

Estou pedindo isso aqui como último recurso depois de tentar coisas diferentes / pedir ao Google / ler o link

Eu tenho o seguinte no meu 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

Tudo isso funciona bem. Agora, eu queria que URLs como as seguintes tivessem

Access-Control-Allow-Origin "*"

... cabeçalho também:

/video/player/sources.json?contentId=AVID20150102_0012&width=640&height=360

Como você pode ver, esse URL é quase idêntico ao da linha acima:

RewriteRule ^/video/player/config.json - [E=crossdomain:1]

Com (talvez) uma diferença importante - aquele (config.json) não usa strings de consulta e este (sources.json) faz.

Eu tentei adicionar regras diferentes para aplicar a variável de ambiente "crossdomain" ao URL sources.json, sem sucesso. Por exemplo:

RewriteCond %{REQUEST_URI} ^/video/player/sources.json [NC]
RewriteCond %{QUERY_STRING} ^contentId=(.*)&width=(.*)&height=(.*)
RewriteRule .* - [E=crossdomain:1]

O que eu acho que deveria ser o correto (mas como não funciona claramente, eu estou errado).

Eu PENSO o problema pode ter a ver com o% {REQUEST_URI} de alguma forma, desde quando eu uso isso:

RewriteCond %{QUERY_STRING} contentId
RewriteCond %{QUERY_STRING} width
RewriteCond %{QUERY_STRING} height
RewriteRule .* - [E=crossdomain:1]

... o cabeçalho desejado aparece nos cabeçalhos da resposta, embora eu não queira que o cabeçalho seja aplicado a tudo que usa esses parâmetros de consulta, seria uma coisa errada a se fazer.

    
por Emmanuel Figuerola 10.03.2015 / 19:50

1 resposta

0

Você pode fazer isso com a seguinte condição:

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

YMMV e pode exigir alguns ajustes para trabalhar com outras regras, mas este é o caminho.

    
por 13.03.2015 / 06:09