Conjunto de cabeçalhos Access-Control-Allow-Origin não funciona com mod_rewrite + mod_jk

6

Minha primeira pergunta aqui no SF então por favor me perdoe se eu conseguir bork o post. :)

De qualquer forma, estou usando mod_rewrite em uma das minhas máquinas com uma regra simples que redireciona para uma aplicação web em outra máquina. Eu também estou definindo o cabeçalho 'Access-Control-Allow-Origin' em ambas as máquinas. O problema é que quando eu clico na regra de reescrita, perco a configuração de cabeçalho 'Access-Control-Allow-Origin'.

Aqui está um exemplo da configuração do Apache para a primeira máquina:

NameVirtualHost 10.0.0.2:80
<VirtualHost 10.0.0.2:80>
   DocumentRoot /var/www/host.example.com
   ServerName host.example.com
   JkMount /webapp/* jkworker
   Header set Access-Control-Allow-Origin "*"
   RewriteEngine on
   RewriteRule   ^/otherhost  http://otherhost.example.com/webapp [R,L]
</VirtualHost>

E aqui está um exemplo da configuração do Apache para o segundo:

NameVirtualHost 10.0.1.2:80
<VirtualHost 10.0.1.2:80>
   DocumentRoot /var/www/otherhost.example.com
   ServerName otherhost.example.com
   JkMount /webapp/* jkworker
   Header set Access-Control-Allow-Origin "*"
</VirtualHost>

Quando eu bato em host.example.com , vemos que o cabeçalho está definido:

$ curl -i http://host.example.com/
HTTP/1.1 302 Moved Temporarily
Server: Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.7e-p1 DAV/2 mod_jk/1.2.26
Content-Length: 0
Access-Control-Allow-Origin: *
Content-Type: text/html;charset=ISO-8859-1

E quando eu clico em otherhost.example.com , vemos que também está configurando o cabeçalho:

$ curl -i http://otherhost.example.com
HTTP/1.1 200 OK
Server: Apache/2.0.46 (Red Hat)
Location: http://otherhost.example.com/index.htm
Content-Length: 0
Access-Control-Allow-Origin: *
Content-Type: text/html;charset=UTF-8

Mas quando tento acertar a regra de reescrita em host.example.com/otherhost , não temos amor:

$ curl -i http://host.example.com/otherhost/
HTTP/1.1 302 Found
Server: Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.7e-p1 DAV/2 mod_jk/1.2.26
Location: http://otherhost.example.com/
Content-Length: 0
Content-Type: text/html; charset=iso-8859-1

Alguém pode apontar o que estou fazendo errado aqui? Poderia o mod_jk ser parte do problema?

    
por tharant 27.04.2010 / 23:41

2 respostas

4

Eu usei com sucesso:

SetEnvIf Origin "http(s)?://(domaine1\.com|domain2\.com)$" AccessControlAllowOrigin=$0
Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin

de link

    
por 17.01.2012 / 14:35
2

Como é um redirecionamento, você precisa de "cabeçalho definido sempre ..." devido a alguns problemas internos do Apache. Contanto que você não esteja editando / sobrescrevendo um cabeçalho existente, "sempre" é razoável para dar um tapa nela sem muita preocupação.

    
por 09.01.2011 / 18:45