最近在基于Jeecms的框架进行二次开发,前后端联调简直踩坑无数,这几天遇到跨域问题若干,一个最新的前端报错:
Access to XMLHttpRequest at 'http://xx.xx.xx.xx:8083/xxx' from origin 'http://localhost:63342' has been blocked by CORS policy: Request header field zz is not allowed by Access-Control-Allow-Headers in preflight response.
这个接口,postman直接请求是正常的,前端页面请求会报网络异常,显示如上错误。后端无反馈,未进入相应接口。
其实错误已经明确指出了问题原因:Request header field is not allowed by Access-Control-Allow-Headers in preflight response 也就是说后端拦截了Headers里面的zz,需要在header跨域过滤器中重新设置,允许带zz的Header通过前端网页访问。
进入HeaderCorsFilter.java,在doFilter方法中,添加新的resp.setHeader("Access-Control-Allow-Headers","zz")
在jeecms的框架中,可以搜索Access-Control-Allow-Headers,查看其它地方的header过滤设置,例:ResponseUtils.java,照猫画虎即可。