Soru Apache'de Access-Control-Allow-Origin başlığı ile birden çok etki alanı ele


Etki alanları arası erişim üstbilgisi için apache'yi yapılandırmak istiyorum. Forumdaki konu sayısına göre birden fazla kombinasyon denedim. Ama benim için çalışmıyor.

Yollarım, denedim:

1) Aşağıdaki gibi farklı satırlarda etki alanı belirtin Header set :

Header set Access-Control-Allow-Origin "example1.com"
Header set Access-Control-Allow-Origin "example2.com"
Header set Access-Control-Allow-Origin: "example3.com"

Bu kurulum ile seçim sadece son bir ve herkesin geri kalanını görmezden gel.

2) Aşağıdaki gibi farklı satırlarda etki alanı belirtin Header add :

Header add Access-Control-Allow-Origin "example1.com"
Header add Access-Control-Allow-Origin "example2.com"
Header add Access-Control-Allow-Origin: "example3.com"

Bununla, başlıktaki üç alanı da gösterir, ancak Firefox'ta yazı tipleri alınmaz.

3.) kullanarak çalıştı SetEnvIfama yine de çalışmıyor:

SetEnvIf Origin "http(s)?://(www\.)?(mydomain.com|mydomain2.com)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin

Sonunda "*" ile çalışıyorum ama bunu kullanmak istemiyorum.

Lütfen bu konuda yardımcı olun.


23
2017-12-19 05:09


Menşei


Bunu okudun mu? stackoverflow.com/a/4730826/550618 304 yanıt kodu ile ilgili sorunlar için? - regilero
"Header set" kullanırsam, FF üzerinde çalışır. Ancak bu durumda sadece son alan adını alıyor :( ve birden çok alan için yapılandırmak istiyorum. - Kuldeep
sorun değil set veya addeklemek always anahtar kelime - regilero
Hala aynı sorunu yaşıyor. Aşağıda gösterildiği gibi "her zaman" anahtar sözcüğünü kullanırsam: Üstbilgide her zaman Erişim-Kontrol-İzin-Kökeni "example1.com" olarak ayarlanır. Üstbilgide her zaman Erişim-Kontrol-İzin-Kökeni "example2.com" olarak ayarlanır. Üstbilgi her zaman Erişim Denetimi-İzin ver -Origin: "example3.com" Sonra sadece son alan adı ve yazı tipleri FF üzerinde çalışıyor. Diğer yandan, her zaman aşağıdaki gibi ekle anahtar sözcüğünü kullanırsam: Üstbilgide her zaman Erişim-Kontrol-İzin-Kökeni ekle "example1.com" Üstbilgiyi her zaman Erişim-Kontrol-İzin-Kökeni ekle "example2.com" Üstbilgiyi her zaman Erişim Denetimi ekle -Allow-Origin: "example3.com" Ardından yazı tipleri FF üzerinde çalışmıyor. - Kuldeep
Merhaba uzmanlar - Bu konuda bana rehberlik edebilir misiniz? - Kuldeep


Cevaplar:


.Htaccess'inizde 3 alan adı için:

<IfModule mod_headers.c>
    SetEnvIf Origin "http(s)?://(www\.)?(domain1.org|domain2.com|domain3.net)$" AccessControlAllowOrigin=$0$1
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    Header set Access-Control-Allow-Credentials true
</IfModule>

Bunu denedim ve benim için çalışıyor. Senin için uygun değilse bana bildirin.


31
2018-03-11 16:57



Bu tek yoldur, hizmet etmeden önce ana bilgisayarı kontrol ederek dinamik olarak sadece bir değere hizmet eder. "Her zaman ekle" veya "ekle" benim için çalışmadı. - Ciantic
Doğruladığınız için teşekkürler :) - George
Benim için harika çalışıyor. Diğer bir örnek sadece "0 $ 1" değerini kullandığım için "$ 0 $ 1" hakkında merak ediyorum. Farklı web sunucuları için aynı .htaccess dosyası yeniden kullanıldığında sağlamlık gibi görünüyor (Apache için 0 $ çalışıyor). - Michael Biermann
Yanıt, "Menşe" alanına bağlı olarak değişebileceğinden, belki de Vary: Origin başlık da ayarlanmalıdır (bkz. stackoverflow.com/questions/25329405/...) - martin
Sadece "$ 1" ini terk ederken sadece benim için çalıştı. Bazı nedenlerden dolayı "$ 1" "s" olarak ayarlandı ve bu nedenle eşleşmedi ("domain1.org" "domain1.orgs" ile eşleşmedi). - mcb


Yanlış anlamadığım sürece kullanım kılavuzu, olmalı:

Header always append Access-Control-Allow-Origin: "example1.com"
Header always append Access-Control-Allow-Origin: "example2.com"
Header always append Access-Control-Allow-Origin: "example3.com"

Kılavuzda, set ve add eylemler şu şekilde davranır:

ayarlayın: "Yanıt başlığı, önceki herhangi bir başlığın bu adla değiştirilmesiyle belirlendi"

eklemek: "... Bu, aynı ada sahip iki (veya daha fazla) başlığa neden olabilir. Bu, öngörülemeyen sonuçlara yol açabilir ..."


13
2018-01-06 17:17



manuel de diyor append... This is the HTTP standard way of giving a header multiple values. - chris.antonellis
Tanrım teşekkür ederim. Bunu bulmak için etrafta çokça uğraştım. - dudewad


Belirli URI'lere erişimi kısıtlamak için bu dokümanları kullanıma sunun:

CrossOriginRequestSecurity

Sunucu Tarafı Erişim Denetimi # Apache_examples

Bir yararlı hile, belirli URI'lere Access-Control-Allow-* uygulamak için bir Apache yeniden yazma, ortam değişkeni ve üstbilgileri kullanmaktır. Bu, örneğin, çapraz kaynaklı istekleri kimlik bilgileri olmadan GET /api(.*).json isteklerine sınırlamak için kullanışlıdır:

RewriteRule ^/api(.*)\.json$ /api$1.json [CORS=True]
Header set Access-Control-Allow-Origin "*" env=CORS
Header set Access-Control-Allow-Methods "GET" env=CORS
Header set Access-Control-Allow-Credentials "false" env=CORS

Ayrıca, genel olarak, W3 Wiki - CORS Etkin # For_Apache Başlığı ortaya çıkarmak için, Dizin, Konum ve Dosya bölümleri içinde veya bir .htaccess dosyası içinde aşağıdaki satırı ekleyebilirsiniz.

<IfModule mod_headers.c>
  Header set Access-Control-Allow-Origin "*"
</IfModule>

VE, ayarlamak yerine eklemek kullanabilirsiniz, ancak eklemek için üstbilgiyi birden çok kez ekleyebileceğinin farkında olun, bu yüzden genellikle kümeyi kullanmak daha güvenlidir.


2
2017-11-28 18:51





Bunu dene, benim için çalışıyor. .Htaccess uygula:

SetEnvIf Origin "^http(s)?://(.+\.)?(domain\.org|domain2\.com)$" origin_is=$0 
Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is

0
2017-07-19 10:48





Bu, Klasik ASP'de benim için çalışır:

If Request.ServerVariables("HTTP_ORIGIN") = "http://domain1.com" Then
  Response.AddHeader "Access-Control-Allow-Origin","http://domain1.com"
ElseIf Request.ServerVariables("HTTP_ORIGIN") = "http://domain2.com" Then
  Response.AddHeader "Access-Control-Allow-Origin","http://domain2.com"
'and so on
End If

-2
2018-02-15 12:38



Soru Apache ile ilgili. - iamnotmaynard