浏览器拦截跨域请求处理方法(同源策略不允许读取XXX上的远程资源)

时间:2022-11-22 15:33:35

直接了当了说,解决此类问题,最直接的方法就是,就是给被请求的服务器,添加HTTP头响应头,这里提供两种添加HTTP头的方法:

    第一种,就是在程序中添加HTTP头:

    Response.AddHeader("Access-Control-Allow-Origin", "*");

 

  添加此段代码的目的很简单,也就是告诉浏览器,这个资源是运行远程所有域名访问的。当然,此处的*也可以替换为指定的域名,出于安全考虑,建议将*替换成指定的域名。

   第二种,就是在服务器上,添加HTTP响应头。在这里,我们就以IIS6.0为例:

   在被请求的网站上,设置HTTP头,添加“

   "Access-Control-Allow-Origin", "*"

   值为:*或指定的域名。

 第三种,利用JSONP来达到目的,如:

 

$.tool.JSONPDataGet = function (Class, Cmd, _attr, _Init,_callBack, _completeCallBack, _errorCallBack) {
if (_Init) { _Init(_Init); }
if (_attr != '') _attr = '&' + encodeURI(_attr);
var strPage = 'xxxx;
$.ajax({
url: strPage,
type: 'GET',
dataType: 'jsonp',
jsonp: 'jsonCallBack',
cache: false,
context: this,//JSONP在本函数里回调
success: function (_Data) {
if (_callBack) { _callBack(_Data); }
},
complete: function (XMLHttpRequest, textStatus, errorThrown) {
if (_completeCallBack) { _completeCallBack(); }
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (_errorCallBack) { _errorCallBack(); }
}
});
};