Сегодня я обнаружил странное поведение XMLHttpRequest. Когда я звоню в службу GET, я обнаружил, что если я не настрою заголовок авторизации, запрос от firefox будет таким же. Но если я добавлю заголовок "Авторизация", то firefox сначала отправит запрос с помощью "ОПЦИИ", затем отправит запрос "GET".
Я знаю, что глагол "OPTIONS" должен обрабатываться на стороне сервера, но мне просто интересно, почему так выглядит XMLHttpRequest. Хотя это запрос перекрестного домена, почему браузер сначала отправляет запрос "ОПЦИИ". Почему добавление заголовка "Авторизация" изменяет поведение.
Вот мой код Javascript и отчет инспектора Fidler.
var xmlhttp = new XMLHttpRequest();
var url = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
xmlhttp.open('GET',url,true);
xmlhttp.setRequestHeader("Authorization", "xxxxxxxxxxxxxxxxxxx");
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {
alert("OnReadystatechange + " + xmlhttp.readyState + " " + xmlhttp.status);
if (xmlhttp.readyState == 4) {
if ( xmlhttp.status == 200) {
}
else {
}
}
else
alert("Error ->" + xmlhttp.responseText);
}
И ответ скрипта с заголовком авторизации
Но когда я не добавляю заголовок авторизации, браузер напрямую отправляет запрос GET без запроса OPTIONS.