使用 jQuery 文件上传,我将文件上传到第三方服务器,该服务器需要对所有传入请求进行 token 身份验证。上传之前,浏览器会发送OPTIONS请求来检查跨域授权。该请求失败并返回 401,因为它不包含 token 。如何向该请求添加“Authorization: Token” header ?
在curl中,这是有效的:
curl -X OPTIONS https://api.example.com -H 'Authorization: Token <TOKEN>'
我尝试了以下三个选项,但没有成功:
$("#file-upload").fileupload({
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Token " + TOKEN);
},
xhrFields: {
"Authorization": "Token " + TOKEN
},
requestHeaders: {
"Authorization": "Token " + TOKEN
},
});
最佳答案
为此,远程端点必须显式设置 CORS 响应 header 以允许在 OPTIONS 请求中使用授权:
Access-Control-Allow-Headers: Authorization
如果您尝试上传的远程服务器未设置此 header ,您的跨域 AJAX 调用将无法发送 Authorization
请求 header 。
关于jQuery文件上传: Setting headers for HTTP OPTIONS in cross browser upload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975717/