同源策略与基本认证冲突?

时间:2011-04-27 12:48:33

标签: jquery ajax authentication same-origin-policy

通过添加
来配置webservice-server以支持CORS Header set Access-Control-Allow-Origin "*"
到apache虚拟主机conf,出现了一个新问题。 我使用jquery 1.5调用webservice:

$.ajax( {
    type: "GET",
    url: wsBaseUrl + "?action=xyz",
    dataType: "json",

    success: function(data){
        wsCallback(data);
    }
});

这个适用于服务器配置的跨域工作。但是,如果Web服务需要身份验证(生产系统就是这种情况),它就会再次中断。

对于身份验证,我添加了jquery ajax params

    username: "userx",
    password: "passx",

单独验证(不是跨域)有效。但只要它结合在一起(身份验证+跨域),它就结束了。 jQuery调用错误回调告诉我不允许该请求。我在Firefox中使用TamperData记录了请求,并且没有记录Web服务请求。然而,可能是那里没有记录所谓的预检(但如果是这样,为什么这取决于认证?)。

我在我的测试系统上尝试了所有组合,我很确定这是正确的结论 现在我真的被卡住了。我还可以做些什么来调试/解决这个问题?

1 个答案:

答案 0 :(得分:1)

根据MDC,简单的GET请求不是预先检查的,但是对于凭证请求(例如在您的示例中添加用户名,密码时),服务器必须以{{ 1}}以便FF 1.5+允许请求完成。

<强>更新

另见Sending credentials with cross-domain posts?