Загрузка файла 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
заголовок запроса.