我正在尝试向一些基本的http身份验证网址发出jQuery AJAX请求。 这是我的jQuery代码:
jQuery.ajax({
url: "https://abc.com/houses/1/appliance_hints",
method: 'GET',
cache: false,
crossDomain: true,
beforeSend: function(xhr){
xhr.setRequestHeader('Authorization', 'Basic Z3NsYWI6cGFzczFnczFhYg==');
},
success: function(result){
alert(result);
}
});
我在这里设置请求标题'Authorization'。但这是我在FF
中的请求标题中看到的内容Host <host>
User-Agent Mozilla/5.0 (Ubuntu; X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Origin <origin>
Access-Control-Request-Me... GET
Access-Control-Request-He... authorization,x-requested-with
我做错了吗? 我在响应中获取状态代码302。 是否有任何服务器端配置错误?
答案 0 :(得分:3)
我注意到您已将crossDomain: true
添加到$.ajax
来电,所以我认为您正在尝试从远程域中获取内容?
无论如何,你遇到的主要问题是你违反了Same origin policy。
如果您可以控制remote_url
(在您的示例中为abc.com),您可以将其设置为发送一些标头以允许这些调用。
示例:
Access-Control-Allow-Origin: http://permitted_domain.com
php示例:
header('Access-Control-Allow-Origin: http://permitted_domain.com');
// or to allow all
header('Access-Control-Allow-Origin: *');
答案 1 :(得分:0)
var settings = {
"async": true,
"crossDomain": true,
"url": "YOUGETURL",
"method": "GET",
"headers": {
"authorization": "Basic Z3NsYWI6cGFzczFnczFhYg==",
"cache-control": "no-cache"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});