我正在使用跨域请求$.ajax.它适用于Firefox和Chrome,但不会在IE 7或8上发出呼叫.任何人都可以告诉我以下内容有什么问题吗?
Allow-access-control-origin在我的网站上使用标题了.(没有这些,Chrome和Firefox没有成功请求.)$.ajax({
type: 'GET',
url: "http://anotherdomain.com/Service/GetControl?id=" + zoneID,
cache: false,
contentType: "application/x-www-form-urlencoded",
async: false,
beforeSend: function (request) {
//alert('before send');
//request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
//request.setRequestHeader("X-PINGOTHER", "pingpong");
} ,
success: function (data, status) {
//alert("Data returned :" + data);
//alert("Status :" + status);
if (status == "success" && data != "")
$("#" + div.id).append(data);
else
$("#" + div.id).attr("style", "display:none;");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
我尝试了多个网站上的各种提示,但还没有运气.
我有一个使用jQuery 1.4.2脚本的iframe.同样的iframe被注入到两个http和https站点中.jQuery脚本作为相对路径包含在主HTML文件中(例如,/ scripts/jquery-1.4.2.min.js).
进行AJAX调用时,Internet Explorer拒绝访问.AJAX正在调用另一个子域,但它正在使用正确的协议.所有其他浏览器都可以工作,但Internet Explorer会出现以下错误:
SCRIPT5:访问被拒绝.
jquery-1.4.2.min.js,第127行字符344
我听说这个错误来自跨域AJAX调用.但为什么IE是唯一一个给我废话的人呢?有IE解决方案吗?
另外,这是我的AJAX:
$.ajax({
url: thisURL,
dataType: "json",
data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()},
success: function(ret){
callback(ret)
}
});
Run Code Online (Sandbox Code Playgroud) 我们正在开发一个使用html5,jQuery(1.8.2)和jQuery mobile的移动网站,同时进行jQuery ajax调用(get和post).
在我们更改了域名后,我们对ie9上的ajax调用进行了"拒绝访问".
我们试图包括jquery.iecors.js.但我们仍然得到同样的错误.这有什么解决方案吗?
示例代码:
$.support.cors = true;
$.ajax({
cache: false,
async: true,
crossDomain: true,
timeout: 600000,
url: baseUrl + '/SmartTouch/restServices/PrefferedHotels',
type: 'GET',
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic " + myencoded);
},
contentType: "application/x-www.form-urlencoded; (http://www.form-urlencoded;) (http://www.form-urlencoded;) charset=UTF-8",
success: function (data) {
alert("success");
},
error: function (jqXHR, textStatus, errorThrown) {
alert("error!!::" + JSON.stringify(jqXHR));
alert('response: ' + jqXHR.responseText);
alert('code: ' + jqXHR.getResponseHeader('X-Subscriber-Status'));
alert("textStatus " + textStatus);
alert("errorThrown " + errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", …Run Code Online (Sandbox Code Playgroud) 我正在用html数据类型制作跨域ajax请求.他们工作正常
Access-Control-Allow-Origin
Run Code Online (Sandbox Code Playgroud)
在服务器的响应中.问题是我需要从服务器的响应中获取某些标头,无论我做什么,除"内容类型"之外的响应标头返回null.
jQuery执行请求,检索包含标题的响应(我可以从流量中看到它),但它不会解析它.
我试过用
crossDomain: true
Run Code Online (Sandbox Code Playgroud)
它没有帮助.以下是来自服务器的示例响应.
Access-Control-Allow-Origin:*
Cache-Control:private
Content-Encoding:gzip
Content-Length:514
Content-Type:text/html; charset=utf-8
X-MYRESPONSEHEADER:1
Run Code Online (Sandbox Code Playgroud)
如果请求和响应文档在同一服务器上
success: function (data, status, xhr) {
totalRows = xhr.getResponseHeader("X-MYRESPONSEHEADER");
Run Code Online (Sandbox Code Playgroud)
工作良好.我也尝试将$ .ajax分配给变量之类的
var jQxhr = $.ajax(.....
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它不会被解析,因为jQuery实际上发出请求并获得响应
有任何想法吗?我错过了什么吗?
标题已发送到请求
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-MYRESPONSEHEADER
Access-Control-Allow-Methods: POST
Access-Control-Allow-Methods: GET
X-MYRESPONSEHEADER: 24
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 29 Feb 2012 11:34:21 GMT
Run Code Online (Sandbox Code Playgroud)
内容长度:514