跨域大部分需要通过后台解决,引起跨域的原因:
3个问题同时满足 才可能产生跨域问题,即跨域(协议,主机名,端口号中有一个不同就产生跨域)
下面是解决方法
方法一
// ajax请求跨域
/*
*解决ajax跨域----jsonp
*/
function httpReq() {
$.ajax({
type:"get",//必须是get请求
url: "/testJsonp",
data: "data",
dataType:"jsonp",//请求的数据类型
jsonp:"callback",//请求类型是回调
jsonpCallback:"callbackFunction",//数据请求成功时回调的方法
success: function (response) {
console.log(response);
}
});
} /**
* java部分
*/
@Controller
public class TestController {
@RequestMapping(value="/testJsonp")
public void testAjaxJsonp(@RequestParam String callback,HttpServletResponse response){
try {
// 这里jsonp返回的数据是固定格式 文后有详细解释
response.getWriter().print(callback+"({\"id\":1})");
response.flushBuffer();
} catch (Exception e) {
e.printStackTrace();
}
}
}
方法二:Java解决
- /**设置响应头允许ajax跨域访问**/response.setHeader("Access-Control-Allow-Origin","*");