最近做项目,遇到跨域问题,网上百度了一下,大致有三种方式解决:

1、使用jsonp:

缺点是只能支持GET方法,不推荐;

2、使用跨域浏览器:https://www.cnblogs.com/laden666666/p/5544572.html

缺点是客户量大的时候不可能每台客户机上的浏览器都去设置,不推荐(自己测试时可使用);

3、使用代理:

原理就是绕过浏览器端,具体如何操作还不太清楚,不推荐;

4、在后端(java、php)加上请求头:

我使用的是SpringMVC4.0.2,具体操作如下:

a.在后端方法中加入

response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET,POST");

关于ajax+java跨域问题关于ajax+java跨域问题关于ajax+java跨域问题关于ajax+java跨域问题关于ajax+java跨域问题

b.前端使用ajax:

关于ajax+java跨域问题

可以解决跨域,但有小问题:

使用contentType: "application/json"传输,只能把参数放置在url中进行传输,不能把参数放在data:{}中,放在data中实际传参是把参数放到了request payload中,后台request.getParameter()取不到参数,不知道为啥,具体取值很复杂:http://blog.csdn.net/your_heart_private/article/details/71436210

所以只能把参数放在url中进行传输。

若为SpringMVC4.2+,框架中提供跨域标签:https://www.cnblogs.com/cielosun/p/6741307.html,未测试过。


若上述方法进行还是不能解决跨域,检查前端html头:

<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta http-equiv="content-security-policy">


相关文章: