我正在尝试启用某些IP来访问特定方法。
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/updateDetail")
.allowedOrigins("127.0.0.1", "10.96.33.45")
.allowedMethods("GET", "POST");
}
但是当我试图调用相同的方法时,我收到了无效的CORS请求。任何人都可以帮我这个吗?
答案 0 :(得分:0)
org.springframework.web.cors.DefaultCorsProcessor在以下情况下返回“无效的CORS请求”
如果不需要CORS,请在实现 WebSecurityConfigurerAdapter#configure(HttpSecurity http)的实现中调用cors().disable()
(例如,如果您使用春季启动)。
或者您可以使用以下方法在响应中添加“ Access-Control-Allow-Origin”标头。 org.springframework.web.cors.CorsConfiguration 或 addCorsMappings (就像您一样,但是也许您应该添加更多方法,或者url或IP不匹配?)。
答案 1 :(得分:0)
您正在寻找的该课程是什么
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SimpleCorsFilter implements Filter {
public SimpleCorsFilter() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
response.setHeader("Access-Control-Max-Age", "12000");
response.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
response.setHeader("Access-Control-Expose-Headers", "*");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, res);
}
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
此过滤器将解决您的所有cors问题
答案 2 :(得分:0)
我已经调试了几天这样的问题。实际的问题是我在服务uri名称/ data vs./daba等中输入错误。这导致SpringBoot无法检索CORS配置(即使当我具有/ **映射时),因此CORS-preflight的状态为403,这导致浏览器根本不发出实际请求-如果浏览器会触发该请求,Spring将返回“找不到资源”,然后我会注意到错别字快得多。