jQuery ajax和跨域(CORS)和基本身份验证

时间:2016-01-26 02:38:19

标签: javascript jquery ajax apache cross-domain

我在建议的可能重复的问题中尝试了答案,但他们并没有改变结果。

我一直试图通过ajax从本地PC上的客户端(测试Chrome和IE)发布到远程服务器的API,但没有成功。 Ajax返回状态为0的错误,服务器返回401。 没有基本身份验证,我确认它有效。但是使用基本身份验证,它从未奏效。

客户端:

$.ajax({
    type : 'POST',
    url : 'http://api-url',
    data : data,
    success : function (response) {
        console.log(response);
    },
    error : function (xhr, status, error) {
        console.log(xhr);
        console.log(status);
        console.log(error);
    },
    beforeSend : function (xhr) {
        xhr.setRequestHeader('Authorization', 'Basic base64username:password');
    },
    xhrFields : {
        withCredentials : true
    }

服务器:

<?php
    header('Access-Control-Allow-Origin: http://localhost');
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD, OPTIONS');
    header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization');
    echo "ok";

有人可以建议我可能会缺少什么。我花了一天时间才找到它,但找不到任何可行的解决方案。

服务器是CentOS 6.7和Apache 2.2.15。

1 个答案:

答案 0 :(得分:0)

如果您将Access-Control-Allow-Origin的远程服务器设置设置为localhost,则它仅适用于本地请求。 试试:

header('Access-Control-Allow-Origin:*);