Soru Mod_rewrite + mod_jk ile çalışmayan Access-Control-Allow-Origin başlık kümesi


Buradaki ilk sorumu SF'de yayınlayabilmek için lütfen beni affet. :)

Her neyse, makinelerimden birinde mod_rewrite'i başka bir makinede bir web sunucusuna yönlendiren basit bir kural ile kullanıyorum. Ayrıca her iki makinede de 'Erişim-Kontrol-İzin-Kökeni' başlığını ayarlıyorum. Sorun şu ki, yeniden yazma kuralına bastığımda, 'Access-Control-Allow-Origin' başlık ayarını kaybediyorum.

İşte ilk makine için Apache yapılandırmasının bir örneği:

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>

Ve burada ikinci için Apache yapılandırmasının bir örneği:

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>

Vurduğumda host.example.com başlığın ayarlandığını görüyoruz:

$ 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

Ve vurduğumda otherhost.example.com başlıkların da ayarlandığını görüyoruz:

$ 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

Ama yeniden yazma kuralını vurmaya çalıştığımda host.example.com/otherhost sevgimiz yok:

$ 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

Burada ne yaptığımı bilen var mı? Mod_jk sorunun bir parçası olabilir mi?


6
2018-04-27 21:41


Menşei




Cevaplar:


Başarıyla kullandım:

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

itibaren http://www.cameronstokes.com/2010/12/26/cross-origin-resource-sharing-and-apache-httpd/


4
2018-01-17 13:35





Bir yönlendirme olduğundan, bazı talihsiz Apache içeriğine sahip olmasından dolayı "her zaman ..." başlıklı sete ihtiyacınız var. Varolan bir üstbilgiyi düzenlemediğiniz / üzerine yazmadığınız sürece, "her zaman", yalnızca o kadar çok endişelenmenize ragmen mantıklıdır.


2
2018-01-09 17:45