将 CORS 添加到 ajax 标头时的 a.toLowerCase

Posted

技术标签:

【中文标题】将 CORS 添加到 ajax 标头时的 a.toLowerCase【英文标题】:a.toLowerCase when add CORS to the ajax header 【发布时间】: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!');
);

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

这让我更进一步 - 谢谢! (事实证明,一个应用程序限制了所有 CORS 访问,所以我不得不请维护它的程序员为我打开它) - 顺便说一句。我很惭愧它在文档中 - 但今天对我来说,在提问之前仔细检查它是一个教训。 没问题,很高兴为您提供帮助

以上是关于将 CORS 添加到 ajax 标头时的 a.toLowerCase的主要内容,如果未能解决你的问题,请参考以下文章

Django-添加到服务器标头(CORS)

是否可以将 CORS 标头添加到来自 Tomcat 容器中 j_security_check 的响应

如何将 CORS 标头添加到 401/403 响应?

没有将 Cors 标头添加到响应中

带有自定义标头的 Ajax 请求发送到启用 CORS 的 Web API 服务器

AJAX 使用 CORS 获取自定义响应标头