【问题标题】:Ajax Post request not authorizedAjax Post 请求未授权
【发布时间】:2013-09-13 08:04:37
【问题描述】:

我有这个 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 代码

$.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 是否会导致问题,因为它以前有效,但我的日志中什么也没有

这里有人有类似的经验吗? 有什么指点吗?

【问题讨论】:

    标签: ajax ssl cors


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-07-24
      • 2012-08-17
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多