【问题标题】:a.toLowerCase when add CORS to the ajax header将 CORS 添加到 ajax 标头时的 a.toLowerCase
【发布时间】:2016-01-25 12:08:54
【问题描述】:

我有一个在线的 Django 应用程序和一个需要在标题中添加特殊 token 的 API。

当我将它添加到 $.ajaxSetup 时,它仍然需要我 CORS Access-Control-Allow-Origin 标头中的参数。

添加时出现错误:TypeError: a.toLowerCase is not a function

奇怪的是,当我在 HttpRequester firefox 插件中使用相同的代码时,因为我得到了预期数据的正确响应。

代码:

$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader({
          'CORS': 'Access-Control-Allow-Origin',
          'token': 'tokenStringHere'
        });
    }
});

$.ajax({
  url: 'myPathToOnlineAppWithApiString',
  type: 'GET',
  contentType: 'application/json',
  headers: {
  }
}).success(function(result){
  console.log('yes!');
}).error(function(error){
  console.log('no!');
});

【问题讨论】:

    标签: javascript jquery ajax django django-cors-headers


    【解决方案1】:

    setRequestHeader 接受两个字符串,即标题名称及其值,而不是对象。有关详细信息,请参阅 jQuery 文档的 $.ajax 条目的 jqXHR 部分。

    您应该将参数中的对象替换为两个调用以分别设置这些标头:

    $.ajaxSetup({
         beforeSend: function(xhr) {
            xhr.setRequestHeader('CORS', 'Access-Control-Allow-Origin');
            xhr.setRequestHeader('token', 'tokenStringHere');
        }
    });
    

    【讨论】:

    • 这让我更进一步 - 谢谢! (事实证明,一个应用程序限制了所有 CORS 访问,所以我不得不请维护它的程序员为我打开它) - 顺便说一句。我很惭愧它在文档中 - 但今天对我来说,在提问之前仔细检查它是一个教训。
    • 没问题,很高兴为您提供帮助
    猜你喜欢
    • 2016-09-28
    • 2016-05-15
    • 2017-04-16
    • 2015-08-10
    • 2019-09-05
    • 2016-03-24
    • 2017-05-23
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多