无法在 POST Ajax 请求中发送授权令牌 - 出现错误 - Access-Control-Allow-Headers 不允许请求标头字段 authToken

Posted

技术标签:

【中文标题】无法在 POST Ajax 请求中发送授权令牌 - 出现错误 - Access-Control-Allow-Headers 不允许请求标头字段 authToken【英文标题】:Cannot send Authorization Token in POST Ajax request - getting error - Request header field authToken is not allowed by Access-Control-Allow-Headers 【发布时间】:2015-12-03 03:03:45 【问题描述】:

我尝试在 Web 浏览器中运行此代码以访问 taleo API。我已经通过登录获得了 authToken。我现在需要使用它来进行后续调用。但是我收到此错误:Access-Control-Allow-Headers 不允许请求标头字段 authToken。有人可以告诉我实际执行此操作的最佳方法吗?

xhr = $.ajax(
        type: "POST",
        url: logout,
        dataType: 'json',
        async: false ,
        crossDomain : true,
        headers: 'authToken': Token , 
        success: function (data) 
        console.log(data);
        console.log(data.status.success)
        
      );

【问题讨论】:

如果您可以成功登录,那么那个 ajax 调用和这个调用是有区别的。他们有什么不同? 【参考方案1】:

您似乎遇到了跨域问题。 请参阅以下问题以获得更好的解释:

Cross domain AJAX call

试试这个,你也可以在客户端调用时设置跨浏览器属性。

$.ajax(

        type:         "POST",
        url:          "test/test/test",
        dataType:     "text/xml",
        data:         "",
        processData:  false,       // default to true will parse data as an Array whereas we send XML
        contentType:  "text/xml",
        async:        false,
        beforeSend: function (request)
        
            request.setRequestHeader("Access-Control-Allow-Origin", "*");
            request.setRequestHeader("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, OPTIONS");
            request.setRequestHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
        ,

【讨论】:

谢谢!是否有可能在不改变任何服务器端的情况下做到这一点? 谢谢!我尝试了这些,现在错误给了我:Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Origin。如何解决这个问题?

以上是关于无法在 POST Ajax 请求中发送授权令牌 - 出现错误 - Access-Control-Allow-Headers 不允许请求标头字段 authToken的主要内容,如果未能解决你的问题,请参考以下文章

在 react-native 中发送请求标头/授权 axios.post

Django 如何让ajax的POST方法带上CSRF令牌

在 Ext JS Ajax 请求中发送“授权”标头,Chrome 与 Firefox

表单在 2 次 ajax 更新后无法发送 POST 请求

Spring oauth2服务器,无法验证令牌

如何在http post请求中发送参数以获取laravel中的数据