一、问题:
跨域请求中包含自定义header字段时,浏览器console报错。
Request header field xfilesize is not allowed by Access-Control-Allow-Headers
1 想要实现前后分离,首先得跨域
2 怎么跨域,在后端中 servlet 或 filter 设置请求头,然后就出问题了
3 has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response
已被CORS策略阻止:响应请求头,不允许请求标头字段内容类型
4 问题就出在这,思考了很久,代码好像没错啊
response.setHeader("Access-Control-Allow-Origin");
response.setHeader("Access-Control-Allow-Credentials", "true");
5 百度了之后,原因:
包含自定义header字段的跨域请求,浏览器会先向服务器发送OPTIONS请求,探测该服务器是否允许自定义的跨域字段。
如果允许,则继续实际的POST/GET正常请求,否则,返回标题所示错误
6 说白了就是,要有自定义请求头和响应头完成跨域交互,浏览器要求的(浏览器版本新)
7 java 自定义请响应头,给浏览器一个响应,带这个请求头的放行
// /* 允许跨域的请求头 */ // 这里 指定 自己起一个
response.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Control-Ajax-Headers");
response.setHeader("Access-Control-Ajax-Headers", "cros");// 自定义的
8 前端请求头,和后端对应
{'Access-Control-Ajax-Headers': 'cors'}