- 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.
Однако я не уверен, нужно ли это исправлять...
Я создал около дюжины страниц, и все они до сих пор прекрасно и аккуратно работали вместе.
Всякая фигня с тестами, но она работает не так, как я надеялся.
Одна из функций, над которыми мне нужно работать, — использовать 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, чего мне не хватает в моей настройке?