ajax跨域问题

 *近期在开发过程中,由于两个项目之间需要通信,使用了ajax,发现普通的ajax跨域完成不了,查询资料得知:由于同源策略,ajax跨域被禁止,解释截图如下

  经过Google得到了初步的解决方法:使用jsonp.简单解释一下jsonp的原理:

    JSONP(JSONP - JSON with Padding是JSON的一种“使用模式”),利用script标签的src属性(浏览器允许script标签跨域),通过动态创建一个script标签,指定src属性为跨域的api,那么html会把返回的字符创当作javascript代码来进行解析,如果我们在返回的字符串中使用自定义函数形式包装起来,然后在html中调用自定义函数,即可拿到返回的字符串

下面贴入简短的demo

前端ajax:

function crossDomain(){
    $.ajax({
	method:'get',
	dataType:'jsonp',
	jsonp:'cb',
	url:'http://localhost:8081/excms/nldoRunT.action?handler=consult.doCross'
    });
}
				
function cb(msg){
    console.log(msg);
    alert(msg);
}

 后台就像ajax一样返回字符串即可,但是对字符串有点小小的要求:

  例如上面js中回调函数是cb(msg),所以后台返回的字符串格式为"cb(xxxxx)",要使用cb()将你要返回的数据包裹起来即可.

请注意:由于jsonp方法使用的是script机制,所以jsonp只能发送get请求,

解决post请求的跨域问题:在服务器处理方法中加上一行代码

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

其中 * 可以设置自己允许地址.

 
原文地址:https://www.cnblogs.com/carryLess/p/7772967.html