我在春季启动时面临CORS问题.我已经像这样配置了CORS
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
}
Run Code Online (Sandbox Code Playgroud)
我想这可以启用所有标题和其他内容.
它与GET请求一起出色地工作
$.get("someUrl, function(data, status){
console.log(data[0].latitude);
});
Run Code Online (Sandbox Code Playgroud)
但每当我发出像这样的POST请求
$.ajax({
url: 'someUrl',
type: 'post',
dataType: 'json',
crossDomain: true,
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log(data);
},
data: object
});
Run Code Online (Sandbox Code Playgroud)
我得到以下内容
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).
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
Iva*_*cki 21
使用Spring Boot应用程序配置CORS过滤器的简单方法是使@Component
类实现Filter
如下:
@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() {}
}
Run Code Online (Sandbox Code Playgroud)
它非常适合 spring-boot 1.3.0
编辑(2017年10月):
仍然可以使用 spring-boot 1.5.8
归档时间: |
|
查看次数: |
8746 次 |
最近记录: |