我需要从不正确支持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服务器太聪明了。)
有人可以帮忙吗?非常感谢!