Ajax Post请求未经授权

时间:2013-08-19 10:13:17

标签: ajax ssl cors

我有这个webapp,我使用域A中的Ajax到域B上的休息服务发出请求 域B已设置为使用CORS Access-Control *标头提供响应,以使跨域发布工作

来自域B的回复标题:

Access-Control-Allow-Credentials:   true
Access-Control-Allow-Headers:       content-type
Access-Control-Allow-Methods:       POST GET OPTIONS
Access-Control-Allow-Origin:        https://sub.domain-a.com
Access-Control-Max-Age:             180

Ajax代码

$.ajax({
    url: 'https://sub.domain-b.com',
    type: 'POST',
    contentType: 'application/json',
    headers: {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
    },
    data: json,
    dataType: 'json',
    xhrFields: {
        withCredentials: true
    },
    success: function (data) {

    },
    error: function (jqXHR, textStatus, errorThrown) {

    }
});

我登录了两个域,我的请求发送了必要的cookie(withCredentials = true),但我仍然从响应中获得403 Forbidden

两个域都使用SSL证书

我开始怀疑SSL是否导致问题,因为之前有效,而我的日志中没有任何内容

这里有没有人有类似的经历? 有什么指针吗?

1 个答案:

答案 0 :(得分:0)

可能与此问题类似: Pre-flight OPTIONS request failing over HTTPS

通常情况下,问题是使用SSL和预检请求,虽然您不会返回403,但您只是让OPTIONS请求中止。

该服务如何进行身份验证和授权?您使用的是自签名证书吗?听起来你认为SSL导致问题是正确的,如果没有更多信息,很难说出你的具体问题是什么。