web-dev-qa-db-ja.com

ヘッダーセットAccess-Control-Allow-Originがmod_rewrite + mod_jkで機能しない

ここSFでの最初の質問なので、なんとか投稿に失敗した場合はご容赦ください。 :)

とにかく、私のマシンの1つでmod_rewriteを使用していて、別のマシンのWebアプリケーションにリダイレクトする単純なルールを使用しています。また、両方のマシンでヘッダー「Access-Control-Allow-Origin」を設定しています。問題は、書き換えルールにヒットすると、「Access-Control-Allow-Origin」ヘッダー設定が失われることです。

最初のマシンのApache構成の例を次に示します。

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>

2番目のApache構成の例を次に示します。

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>

Host.example.comを押すと、ヘッダーが設定されていることがわかります。

$ 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

otherhost.example.comを押すと、ヘッダーも設定されていることがわかります。

$ 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

しかし、私がHost.example.com/otherhostで書き換えルールにヒットしようとすると、愛はありません。

$ 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

私がここで間違っていることを誰かが指摘できますか? mod_jkが問題の一部である可能性はありますか?

6
tharant

私は正常に使用しました:

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

から http://www.cameronstokes.com/2010/12/26/cross-Origin-resource-sharing-and-Apache-httpd/

4
Ldom

リダイレクトなので、残念なApacheの内部構造のため、「常にヘッダーセット...」が必要です。既存のヘッダーを編集または上書きしない限り、「常に」、心配することなくそこに平手打ちをかけるのが妥当です。

2
covener