【问题标题】:Preflight of cross domain Ajax with custom header (using jquery) always getting cancelled带有自定义标头(使用 jquery)的跨域 Ajax 的预检总是被取消
【发布时间】:2013-04-27 09:11:15
【问题描述】:

我正在尝试使用自定义标头进行跨域 POST,但预检总是被取消(这是 Chrome 的“检查元素”面板 >>“网络”标签中的词),我无法判断它是否被取消浏览器或jQuery。代码是:

var request = $.ajax({
    'type'        : 'POST',
    'crossDomain' : true,
    'url'         : 'https://host.domain/some_path',
    'data'        : {'some_key': 'some_value'},
    'headers'     : {
        'Authorization'        : 'CUSTOM-METHOD credential_id:credential_secret',
        'X-Some-Custom-Header' : '2013-05-02'
    }
})
.done(function(blah){blah})
.fail(function(blah){blah});
  • 如果我删除 headers 对象,或者将其设置为 {},则可以成功发出请求。
  • 如果我删除 Authorization 标头,预检仍将被取消。

我不认为这是服务器端的问题,因为服务器日志中没有关于 OPTIONS 请求方法的内容。我认为从未提出过预检请求。

那么,有什么想法吗?

提前致谢。

【问题讨论】:

  • 控制台标签中显示了什么?
  • @Obaid 控制台选项卡中没有任何内容。虽然,如果我使用console.log(request),我可以看到请求的 readyState 为 0。

标签: jquery ajax rest cors


【解决方案1】:

想通了:这是 HTTPS 中使用的凭据的问题,与代码无关。
我自己生成了服务器凭据,需要告诉浏览器信任该凭据。

【讨论】:

    猜你喜欢
    • 2014-09-16
    • 2013-04-24
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多