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

  • Автор темы demzid
  • 32
  • Обновлено
  • 12, May 2024
  • #1
Привет всем, первый пост здесь... Я играю с политиками безопасности контента и некоторыми другими вещами, пытаясь выяснить, как добавить немного безопасности для пользователей.

Я создал около дюжины страниц, и все они до сих пор прекрасно и аккуратно работали вместе.

Всякая фигня с тестами, но она работает не так, как я надеялся.

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

Проблема в том, что независимо от того, что я пытаюсь сделать, кроме отключения ВСЕЙ безопасности (чего не произойдет), я не могу добиться, чтобы мой вызов AJAX не нарушал политику перекрестных запросов между источниками.



Что меня смущает, так это то, что я вообще не верю, что это должно быть Cross Origin! Я знаю один из способов сделать это — обработать заголовок «Origin» при отправке запроса, но на самом деле он никогда не отправляется! Обычно это не так, за исключением случаев, когда также установлен флаг «withCredentials», что так и есть.



Если это то, что мне нужно сделать, хорошо, но я не могу заставить это работать.

Лучшее решение — убедиться, что оно НЕ рассматривается как перекрестное происхождение, и я считаю, что это также решит проблему.

Оба моих решения ускользают от меня! Скрипт находится в «iframe.php». Итак, вот моя тестовая страница на моем тестовом сервере: (самозаверяющий SSL) час IFrame AJAX CORS Sandbox Test

Полный исходник здесь: час https://www.webucate.me/cors_csp/ajax.zip

Вот тут у меня это не получается.

Этот вызов AJAX не отправит файл cookie.

Однако я не уверен, нужно ли это исправлять...
 const loadLocalXMLCookie = function(){

// This isnt working, I get a CORS Violation

let url = "jsondata.php";

var xhttp = new XMLHttpRequest();

// Third Argument of "true" allows XLMHttpRequest2 which allows sending Cookies via AJAX

xhttp.open("GET", url, true);

// withCredentials should send Cookies via the request, and should not be needed on SameSite

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, чего мне не хватает в моей настройке?

demzid


Рег
04 Jun, 2012

Тем
2

Постов
2

Баллов
22
Тем
49554
Комментарии
57426
Опыт
552966

Интересно