Ich verwende Ionic und Spring Boot 1.3. Es war nicht, bis ich auf 1.3 aktualisiert habe, dass ich dieses Problem bekomme ...Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Ionic, AngularJS, Spring Boot 1.3
Offenbar nach dem Update auf Spring Boot 1.3. CorsFilter wird vollständig ignoriert. All diese Missachtung macht mich verrückt. Also habe ich den NEUEN Weg nachgeschaut und das habe ich bekommen.
package app.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://192.168.1.66:8101")
.allowCredentials(false)
.maxAge(3600)
.allowedHeaders("Accept", "Content-Type", "Origin", "Authorization", "X-Auth-Token")
.exposedHeaders("X-Auth-Token", "Authorization")
.allowedMethods("POST", "GET", "DELETE", "PUT", "OPTIONS");
}
}
Der obige Code wird auf dem Start der Anwendung ausgeführt. Im Gegensatz zu CorsFilter, die jedes Mal ausgeführt wird, wenn eine Anfrage vorliegt. Aber zu Spring Boot 1.3 wechseln, kann ich das nicht mehr im Kettenfilter bekommen.
Wieder wird der Code geladen, ich setze einen Haltepunkt und addCorsMapping wird jedes Mal aufgerufen, damit die Einstellungen vorgenommen werden. So .... Warum bin ich immer noch diesen Fehler
XMLHttpRequest cannot load http://192.168.1.66:8080/login?username=billyjoe&password=happy. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.1.66:8101' is therefore not allowed access.
EDIT Unten ist mein alter CorsFilter. Es funktioniert nicht mehr, seit ich auf Spring Boot 1.3 aktualisiert habe.
package app.config;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class CorsFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(CorsFilter.class);
public CorsFilter() {
log.info("SimpleCORSFilter init");
}
@Override
public void doFilter(ServletRequest req,
ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String clientOrigin = request.getHeader("origin");
response.addHeader("Access-Control-Allow-Origin", clientOrigin);
response.setHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, PUT");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Accept, Content-Type, Origin, Authorization, X-Auth-Token");
response.addHeader("Access-Control-Expose-Headers", "X-Auth-Token");
if (request.getMethod().equals("OPTIONS")) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(request, response);
}
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
Danke für die Antwort. Vor dem Aktualisieren auf 1.3 Spring Boot. Ich hatte so etwas und es funktionierte perfekt. Seit ich auf Spring Boot 1.3 aktualisiert habe, wird es jetzt komplett ignoriert. deshalb habe ich das neuere Setup hinzugefügt. Ich habe oben meinen CorsFilter hinzugefügt. Es ist ähnlich wie Ihre, aber ich bekomme den Ursprung der IP und setze es auf die Zugriffskontrolle. In jedem Fall wird die Datei vollständig ignoriert, was bedeutet, dass keine Einstellungen vorgenommen werden. Ich möchte auch hinzufügen, dass ich WebSocket-Layer verwende, die den Astrick-Wert nicht erlaubt. – numerical25
sogar für mich funktioniert der gleiche Filter –