后端servlet跨域问题

发布于 2022-01-01 13:14:36 字数 1395 浏览 755 评论 4

很奇怪,前端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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

想挽留 2022-01-06 10:40:22

我之前有把后端改成PHP接收,这样写的前端也是没有问题的。可以将问题锁定在是后端

白龙吟 2022-01-06 05:18:06

查看一下接口响应的头信息,检查你加的head是否都写进去了。

策马西风 2022-01-05 08:47:50

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

陌上芳菲 2022-01-04 21:10:32

看我博客里面关于一篇跨域问题的解决,不知道能否帮上

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文