Загрузка файла jQuery: настройка заголовков для HTTP-опций при кросс-браузерной загрузке

Используя загрузку файлов jQuery, я загружаю файл на сторонний сервер, который требует аутентификацию токена для всех входящих запросов. Перед загрузкой браузер отправляет запрос OPTIONS для проверки междоменной авторизации. Этот запрос не выполняется с 401, потому что он не содержит токен. Как добавить заголовок "Авторизация: токен" к этому запросу?

В 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
      },
  });

1 ответ

Чтобы это работало, удаленная конечная точка должна явно установить заголовок ответа CORS, чтобы разрешить использование авторизации в запросе OPTIONS:

Access-Control-Allow-Headers: Authorization

Если удаленный сервер, на который вы пытаетесь загрузить, не устанавливает этот заголовок, ваш междоменный вызов AJAX не сможет отправить Authorization заголовок запроса.

Другие вопросы по тегам