继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
生活随笔
收集整理的這篇文章主要介紹了
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
繼承WebMvcConfigurer 和 WebMvcConfigurerAdapter類依然CORS報錯???springboot 兩種方式穩定解決跨域問題!
之前我寫了一篇文章,來解決CORS報錯,文中使用到的就是WebMvcConfigurer來進行跨域處理,在最近的項目調試中,我發現這種方法并不能完全覆蓋跨域問題,所以我進行了探索,找了了以下兩種方法進行補充。
1. 注解
在Controller類或方法上添加@CrossOrigin注解。
優勢: 這樣可以很細粒度地控制Cors允許通過的接口。
缺點: 如果是對所有接口進行處理,則需要在每一個Controller類中增加注解。
2. 在過濾器中處理,修改過濾規則
這種方式的缺點和優點剛好和注解的方式相反,可以對大范圍接口做處理,但精細化不如注解靈活。
- java版本:
@Component
public class CORSFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletResponse res = (HttpServletResponse) response;res.addHeader("Access-Control-Allow-Credentials", "true");res.addHeader("Access-Control-Allow-Origin", "*");res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {response.getWriter().println("ok");return;}chain.doFilter(request, response);}@Overridepublic void destroy() {}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}
}
- kotlin版本:
@Component
class CORSFilter : Filter {override fun doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain) {val res = response as HttpServletResponseres.addHeader("Access-Control-Allow-Credentials", "true")res.addHeader("Access-Control-Allow-Origin", "*")res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN")if ((request as HttpServletRequest).method == "OPTIONS") {response.getWriter().println("ok")return}chain.doFilter(request, response)}override fun destroy() {}override fun init(filterConfig: FilterConfig?) {}
}
總結
以上是生活随笔為你收集整理的继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: aws lambda使用, aws无服务
- 下一篇: springboot实现SSE服务端主动