jQuery文件上传: Setting headers for HTTP OPTIONS in cross browser upload

标签 jquery cross-domain jquery-file-upload http-options-method

使用 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/

相关文章:

jquery - 将 Bluefieldscom intl-tel-input 与 jQuery 验证插件结合使用

javascript - 使用 PHP 和 Ajax 将文件上传到 Google Cloud Storage Bucket

javascript - 错误率: jquery file upload on submit form button

javascript - PHP未定义索引(jquery文件上传导致)

使用分页器添加或编辑之前的 jquery、jqgrid 验证

jQuery - 将超时设置为 3 秒,然后运行函数

javascript - jQuery 手机 : How To Put Listview Popup on Top of Page Content?

javascript - 跨域请求的问题

java - 用 javascript 编写并托管在端口 8080 上的松散耦合 ui,如何使用 json 与在端口 80 上运行的 java 应用程序进行通信

javascript - 如何监听子窗口关闭?