通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:

不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:
$.ajax({
async:false,
url: 'http://www.mysite.com/demo.do', // 跨域URL
type: 'GET',
dataType: 'jsonp',
jsonp: 'jsoncallback', //默认callback
data: mydata,
timeout: 5000,
beforeSend: function(){ //jsonp 方式此方法不被触发。原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了
},
success: function (json) { //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数
if(json.actionErrors.length!=0){
alert(json.actionErrors);
}
genDynamicContent(qsData,type,json);
},
complete: function(XMLHttpRequest, textStatus){
$.unblockUI({ fadeOut: 10 });
},
error: function(xhr){
//jsonp 方式此方法不被触发
//请求出错处理
alert("请求出错(请检查相关度网络状况.)");
}
});
但是,此方法仅仅支持get方法,post方法是不支持的,因为jsonp的原理是使用script脚本引入的方法。
下面回归正题,使用nginx的反向代理解决跨域问题。
一、安装nginx。
下载后解压目录如下:

nginx.exe为启动应用程序文件,双击可启动nginx服务器。双击后在浏览器访问localhost看到如下页面为启动成功。


conf为存放配置文件的目录。
二、配置nginx反向代理服务。
首先,需要在nginx.conf上进行配置



注意:nginx的绝对路径不能存在中文哦。
本文介绍了如何使用nginx解决浏览器的跨域限制。浏览器出于安全原因禁止ajax跨域请求,但可以通过jQuery的jsonp解决get请求的跨域。然而,nginx的反向代理提供了一种支持post等更多请求方式的解决方案。文章详细讲解了nginx的安装过程以及配置反向代理的步骤。
1525

被折叠的 条评论
为什么被折叠?



