2016-12-22 9 views
0

Ich habe rund um den ganzen Tag im Internet gesucht. Das ist, was ich auf web.xml enthalten sind,Problem mit CORS Filter

<filter> 
    <filter-name>cors</filter-name> 
    <filter-class>org.sampe.service.context.filter.CorsFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>cors</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Hier wird der Cors Filter (CorsFilter.java)

@Component 
public class CorsFilter 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"); 
     response.setHeader("Access-Control-Max-Age", "3600"); 
     response.setHeader("Access-Control-Allow-Headers", 
      "Origin, X-Requested-With, Content-Type, Accept, Authorization"); 
     chain.doFilter(req, res); 
    } 

    @Override 
    public void init(FilterConfig filterConfig) {} 

    @Override 
    public void destroy() {} 
} 

Es funktioniert auf Postbote in Ordnung. Aber ich habe Probleme damit, Ajax-Anrufe zu tätigen oder angular 2 zu benutzen. Ich habe mir auch diese Fragen angeschaut. solved stackoverflow answer Was ist los mit mir.

+0

Welchen Fehler sehen Sie, wenn Sie Ajax/Angular2-Aufrufe verwenden? –

+0

Das ist nichts mit Angular zu tun – Milad

+0

Ich bekomme "Antwort für Preflight ist ungültig (Redirect)" Fehler in der Konsole – user3127109

Antwort

1

Dies hat nichts mit eckigen zu tun. Die Sache ist, dass Ihre Spring-API Cross-Origin-Anfragen nicht erlaubt.

Damit Ihre API vom Ursprung aus zugänglich ist, können Sie Anmerkungen auf dem Rest-Controller einrichten.

Was ich versuche zu sagen ist, dass Sie Ihren Ruhe-Controller mit @CrossOrigin annotieren können, so dass es Cross-Origin-Zugriff ermöglicht.

Hoffe, das hilft. Kudos

+0

CORS Probleme werden fast immer vom Server verursacht. siehe https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS –

1

Sie haben Ihre Cors Filter mit folgenden Anmerkung zu annotieren:
@Order(Ordered.HIGHEST_PRECEDENCE)
@Order definiert die Sortierreihenfolge für eine kommentierte Komponente. Der Standardwert ist Ordered.LOWEST_PRECEDENCE, was die niedrigste Priorität angibt (Verlust eines anderen angegebenen Bestellwerts).