2016-01-27 60 views
6

CORS ile bahar açılışında sorun yaşıyorum. Bütün başlık ve diğer şeyler sağlar herhalde buSpring Boot ve CORS

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addCorsMappings(CorsRegistry registry) { 
     registry.addMapping("/**"); 
    } 
} 

gibi CORS'yi yapılandırmış.

Bu GET isteği

$.get("someUrl, function(data, status){ 
    console.log(data[0].latitude); 
}); 

ile mükemmel bir performans sergiliyor Ama olsun bu

$.ajax({ 
     url: 'someUrl', 
     type: 'post', 
     dataType: 'json', 
     crossDomain: true, 
     contentType: "application/json; charset=utf-8", 
     success: function (data) { 
      console.log(data); 
     }, 
     data: object 
    }); 

gibi POST isteğinde bulunduğunuzda ben bu sorunu çözebilir nasıl

OPTIONS XHR "someUrl" [HTTP/1.1 403 Forbidden 4ms] 
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at "someUrl". 
(Reason: CORS header 'Access-Control-Allow-Origin' missing). 

aşağıdaki?

yay çizme uygulaması ile CORS filtrenin konfigüre edilmesi
+0

, bunu söz konusu gönderdiniz snippet'lerde içinde olduğunu sanmıyorum. En az miktarda kodla yeni bir Spring Boot (1.3.2.) Kurulumunu denedim ve diğer alanlardan POST'um olduğunda CORS başlıkları doğru bir şekilde eklendi. Hangi önyükleme sürümünü kullanıyorsunuz ve hangi kullanıcı aracısı üzerinden isteklerinizi POST yapıyorsunuz? Projenizdeki diğer bağımlılıklar Cors ayarlarınızı (veya denetleyicilerdeki daha açık yapılandırma) geçersiz kılar mı? – sthzg

+0

Spring Boot 1.3.0.RELEASE kullanıyorum ve kullanıcı aracı Firefox'tur. Aslında diğer ilkbahar önyükleme uygulamalarının diğer uç noktalarına yönlendiren Api-Gateway uygulamasıdır. Ben netflix'ten Zuul kullanıyorum. – nurgasemetey

cevap

15

Basit bir yol yapmaktır böyle Filtre uygulayan sınıf@Component:

@Component 
public class SimpleCORSFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse response = (HttpServletResponse) res; 
     response.setHeader("Access-Control-Allow-Origin", "*"); 
     response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH"); 
     response.setHeader("Access-Control-Max-Age", "3600"); 
     response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
     response.setHeader("Access-Control-Expose-Headers", "Location"); 
     chain.doFilter(req, res); 
    } 

    @Override 
    public void init(FilterConfig filterConfig) {} 

    @Override 
    public void destroy() {} 

} 

O yay ile büyük işler önyükleme 1.3.0

DÜZENLEME:

hala yay çizme ile çalışır bu soruna neden olduğunu ne olursa olsun 1.5.8

+0

bu sınıf çalışmıyor – Bleser

+0

Eğer http temel kimlik doğrulaması kullanıyorsanız, 'Erişim Denetimi-İzin-Başlıkları' içinde 'Yetkilendirme' simgesini eklemeyi unutmayın. –

+2

Burada uygulanan "Filtre", "javax.servlet.Filter" dir. – Tadhg