2015-11-03 3 views
4

Я прочитал много ответов предполета и CORS, поэтому, пожалуйста, не публикуйте ссылки, ссылающиеся на то, что я должен прочитать. Многие из ответов относятся к серверной перспективе, но я клиент в этом случае. Установить заголовок источника? Мое предположение заключается в том, что это простой запрос, верно?Как назначить основной заголовок аутентификации XMLHTTPREQUEST?

req.open("POST", url, true); 
req.setRequestHeader('Content-Type', 'application/blahblah'); 
req.setRequestHeader('Accept', 'application/blahblah'); 
req.setRequestHeader("Authorization", "Basic " + btoa(user + ":" + pass)); 
req.send(); 

Однако его до сих пор не работает, моя ошибка:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 500.

ответ

4

Решение:

req.setRequestHeader('Authorization', 'Basic [base64 encoded password here]'); 
7

Если вы хотите установить заголовок авторизации

req.setRequestHeader('Authorization','Basic ' + Base64StringOfUserColonPassword); 
+0

req.setRequestHeader ("Авторизация", "Базовый" + Base64.encode (пользователь + ":" + pass)) ?? Откуда эта функция? Внешняя библиотека? – carrots

+0

На самом деле извините, я добавил: 'req.setRequestHeader (« Авторизация »,« Базовый »+ btoa (пользователь +»: «+ pass));' и он все еще не работает – carrots

+1

window.btoa, а не только btoa –

2

При использовании этого для запроса API, добавив Авторизую Сначала XMLHttpRequest отправит запрос OPTIONS, который может быть отклонен некоторыми API.

Чтобы обойти это, вы также можете сделать:

var invocation = new XMLHttpRequest(); 
invocation.open("GET", url, true, username, password); 
invocation.withCredentials = true; 

который добавит заголовок авторизации, а также избежать предполетной запрос.

4

Это сообщение устарело, но отвечает за кого-то другого, кто сталкивается с ним.

В заголовке авторизации нет ничего плохого. Проблема, с которой вы сталкиваетесь, связана с CORS.

Вы не устанавливаете заголовок Origin самостоятельно. Браузер делает это для вас. Если ваш источник имеет значение null, я подозреваю, что это связано с тем, что вы используете свой код от file:/// вместо http://.

+0

Думаю, иметь эту проблему. У вас есть решения? – Foxhound

Смежные вопросы