直接了当了说,解决此类问题,最直接的方法就是,就是给被请求的服务器,添加HTTP头响应头,这里提供两种添加HTTP头的方法:
第一种,就是在程序中添加HTTP头:
Response.AddHeader("Access-Control-Allow-Origin", "*");
添加此段代码的目的很简单,也就是告诉浏览器,这个资源是运行远程所有域名访问的。当然,此处的*也可以替换为指定的域名,出于安全考虑,建议将*替换成指定的域名。
第二种,就是在服务器上,添加HTTP响应头。在这里,我们就以IIS6.0为例:
在被请求的网站上,设置HTTP头,添加“
值为:*或指定的域名。
第三种,利用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(); }
}
});
};