2015-04-02 25 views
7

web.xml'da CORS etkin bir tomcat 8 sunucum var. CORS eklentisi vakaların çoğunda çalışır, ama bazen benim erkek kedi sunucusu port 6060 de mipldevlinux7 adlı bir sunucuda CORS etkinleştir, ancak istek üstbilgisi farklı ana bilgisayardan karıştırılmış istek

XMLHttpRequest cannot load http://mipldevlinux7:6060/juneberry/data/blue-marbles/config.json. The 'Access-Control-Allow-Origin' header has a value 'http://localhost:3000' that is not equal to the supplied origin. Origin 'http://mipldevlinux7:7777' is therefore not allowed access 

, ben bir üretim sunucusuna sahip

yerel bir bilgisayar ve sunucu ana bilgisayardan başlık isteğini karıştırır 7777 numaralı bağlantı noktasında aynı ana bilgisayarda.

Gelişimimi localhost:3000 üzerinde yapıyorum ve iş arkadaşım dev sunucusunu localhost:8080 numaralı telefondan çalıştırıyor.

CORS hatası var ve hata, localhost'lar arasındaki üstbilgileri 3000 ve bazen 8080 ile karıştırıyor. Zaman zaman biz de mipledevlinux7:7777 adresinden bir başlık isteğimizi neden localhost'dan talep ediyoruz. Ben kullanıyorum

CORS sağlanan CORS tomcat 8'de inşa geçerli: erkek kedi isteği başlığını önbelleğe mı

<filter> 
    <filter-name>CorsFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 
    <init-param> 
     <param-name>cors.allowed.origins</param-name> 
     <param-value>*</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.allowed.methods</param-name> 
     <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.allowed.headers</param-name> 
     <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Last-Modified</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.exposed.headers</param-name> 
     <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.support.credentials</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>CorsFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

veya hangi karışıklığı neden olan şekilde onu son istek başlığı kullanır ve bütün bloke istekleri? Eğer true cors.support.credentials ayarlarsanız

+0

'cors.preflight.maxage 'öğesini' -1 'olarak ayarlamayı denediniz mi? 'Cors.support.credentials' öğesi doğruysa [Access akış denetimi] 'den (https://tomcat.apache.org/tomcat-8.0-doc/images/cors-flowchart.png) "Erişim-Denetime İzin Ver" -Origin '' '' değil, başlangıçtaki başlığa ayarlanmış. Durumunuzda bir tarayıcı önbellek sorunu olabilir (tomcat, tarayıcıya uçuş öncesi isteğinin sonucunu 1800 saniye süreyle önbelleğe almasını söyler). –

cevap

0

, tarayıcı önbelleği devre dışı bırakmak için -1 cors.preflight.maxage kullanın: Eğer * için cors.allowed.origins ayarlamak istediğinizden emin

<init-param> 
    <param-name>cors.preflight.maxage</param-name> 
    <param-value>-1</param-value> 
</init-param> 

musunuz?