jQuery,带有CORS的问题(需要在预检前发送授权,或跳过预检)

时间:2018-08-23 05:13:46

标签: javascript jquery ajax cors

我需要从不正确支持CORS的服务器访问REST API,并遇到麻烦。我能够配置服务器以正确提供适当的Access-Control-Allow-*标头。问题在于,如果您在不发送Authorization头的情况下调用端点,即使调用了OPTION,该服务器的工作方式也将返回404错误。 jQuery然后认为预检请求失败。

因此,我正在寻找一种方法,要么使jQuery随预检请求一起发送该授权标头,要么诱使它认为404成功,或者完全跳过预检。

我的代码如下:

const api_key = require('./apikey.json')
const api_headers = {
  'Authorization' : 'Key ' + api_key.key
}

$.ajax({
  url: <the url>,
  method: 'GET',
  dataType: 'json',
  headers: api_headers,
  success: function(xhr) {create_points(xhr.responseJSON);},
  error: function(xhr) { console.log(
    "error"
  ); }
})

我尝试添加

   xhrFields: {
      withCredentials: true
   }

但这没有帮助。

我得到的错误是:Failed to load resource: the server responded with a status of 404 (Not Found)Failed to load <the url>: Response for preflight does not have HTTP ok status.

(我也尝试过使用nginx作为本地代理,并告诉它添加标头,但是API服务器太聪明了。)

有人可以帮忙吗?非常感谢!

0 个答案:

没有答案