后端servlet跨域问题
很奇怪,前端axios不加自定义header,发送post一点问题都没有,一改自定义header,console就报跨域问题。
既然普通post都没有问题,说明配置应该是没有问题的。
后端servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Headers", "Key");
response.setHeader("Access-Control-Allow-Methods", "POST, GET,HEAD");
response.setHeader("Access-Control-Max-Age", "3600");
response.setContentType("text/json; charset=utf-8");
request.setCharacterEncoding("utf-8");
String headers = request.getHeader("Key");
System.out.print(headers);
}
Axios({
method: "post",
url: "http://10.0.1.130:8080/u8/test",
headers: {
'Content-Type':'application/x-www-form-urlencoded',
'Key':'abc'
},
data: qs.stringify({ main: "ss" })
})
.then(function(req) {
console.log(req);
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我之前有把后端改成PHP接收,这样写的前端也是没有问题的。可以将问题锁定在是后端
查看一下接口响应的头信息,检查你加的head是否都写进去了。
Access-Control-Allow-Headers可以设置逗号分割的字符串,可能是因为你传递的header里有content-type和Key两个值,但是你设置的只有Key
另外你的报错信息应该完整的复制出来,应该对回答问题有很大帮助
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Key");
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
看我博客里面关于一篇跨域问题的解决,不知道能否帮上