0

我有这个 web 应用程序,我使用 Ajax 从域 A 向域 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({
    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 是否会导致问题,因为这在以前有效,但我的日志中什么也没有

这里有没有人有类似的经验?任何指针?

4

1 回答 1

0

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

通常,当问题出在 SSL 和预检请求时,虽然您不会返回 403,但您只会让 OPTIONS 请求中止。

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

于 2013-09-13T00:04:37.260 回答