Javascript AJAX и политика запросов между источниками

demzid

Пользователь
Регистрация
04.06.12
Сообщения
2
Реакции
0
Баллы
1
Привет всем, первый пост здесь...

Я играю с политиками безопасности контента и некоторыми другими вещами, пытаясь выяснить, как добавить немного безопасности для пользователей. Я создал около дюжины страниц, и все они до сих пор прекрасно и аккуратно работали вместе. Всякая фигня с тестами, но она работает не так, как я надеялся.

Одна из функций, над которыми мне нужно работать, — использовать AJAX для загрузки данных из PHP-скрипта, включая файл cookie с установленным флагом HttpOnly, поэтому Javascript не может его прочитать.

Проблема в том, что независимо от того, что я пытаюсь сделать, кроме отключения ВСЕЙ безопасности (чего не произойдет), я не могу добиться, чтобы мой вызов AJAX не нарушал политику перекрестных запросов между источниками. Что меня смущает, так это то, что я вообще не верю, что это должно быть Cross Origin! Я знаю один из способов сделать это — обработать заголовок «Origin» при отправке запроса, но на самом деле он никогда не отправляется! Обычно это не так, за исключением случаев, когда также установлен флаг «withCredentials», что так и есть. Если это то, что мне нужно сделать, хорошо, но я не могу заставить это работать. Лучшее решение — убедиться, что оно НЕ рассматривается как перекрестное происхождение, и я считаю, что это также решит проблему. Оба моих решения ускользают от меня!

Скрипт находится в «iframe.php».

Итак, вот моя тестовая страница на моем тестовом сервере: (самозаверяющий SSL)
час IFrame AJAX CORS Sandbox Test
Javascript AJAX и политика запросов между источниками
Полный исходник здесь:
час https://www.webucate.me/cors_csp/ajax.zip

Вот тут у меня это не получается. Этот вызов AJAX не отправит файл cookie. Однако я не уверен, нужно ли это исправлять...

Код:
const loadLocalXMLCookie = function(){ let url = "jsondata.php"; var xhttp = new XMLHttpRequest(); xhttp.open("GET", url, true); xhttp.withCredentials = true; xhttp.onreadystatechange = function() { console.log(this); if (this.readyState == 4 && this.status == 200){ outputElement.innerHTML = this.responseText; } }; xhttp.onerror = function(){ outputElement.innerHTML = "XML Cookie Error " + url; }; xhttp.send();
}
Код (JavaScript). Что я могу сделать, чтобы этот объект XMLHttpRequest не обрабатывал запрос как перекрестный источник и, следовательно, использовал PHP для чтения и установки файла cookie? Если мне придется использовать Cross Origin, чего мне не хватает в моей настройке?
 
Сверху Снизу