jQuery AJAX基本身份验证无法工作

3

我正在尝试使用jQuery发起AJAX请求到一些基本的HTTP认证URL。以下是我的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'。但是在火狐浏览器中,请求头显示如下:
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。 这是不是服务器端配置错误?

2个回答

3
我注意到你在$.ajax调用中添加了crossDomain: true,因此我认为你正在尝试从远程域获取一些内容?
无论如何,你面临的主要问题是你违反了同源策略
如果你可以控制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: *');

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);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接