正在向具有不同域和基本身份验证的服务器发出ajax POST请求吗?

时间:2015-01-31 05:08:44

标签: javascript ajax post basic-authentication preflight

我正在尝试向具有不同域的服务器发出POST请求,这需要基本身份验证。

我已尝试过beforeSend和withCredentials的每个组合,但基本的auth标头永远不会在OPTIONS预检请求中发送。

 $.ajax({
      url: anotherdomain,
      data: data,
      cache: false,
      contentType: false,
      processData: false,
      type: 'POST',
      dataType:'json',
      xhrFields: {
         withCredentials: true
      },
      crossDomain: true,
      beforeSend: function(xhr) {
        xhr.setRequestHeader('Authorization', 'Basic *');
          xhr.withCredentials = true;        
      }

我似乎能够成功获得此请求的唯一方法是将dataType设置为'jsonp',或将请求'type'设置为GET。

解决此问题的唯一方法是从另一个域服务器中删除OPTIONS请求的基本身份验证要求吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您还必须在服务器上允许标头: 这是一个php示例(这是对所有来源的请求打开,我建议你只限于生成ajax的网站):

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');