#javascript #fetch #cross-origin-read-blocking
#javascript #извлечение #перекрестное происхождение-блокировка чтения
Вопрос:
Я использую vanilla js для загрузки некоторых HTML-частей статической веб-страницы, это для верхнего и нижнего колонтитулов, поэтому мне не нужно переписывать их на каждой новой странице, которую я создаю. Я записываю их в текстовый файл и добавляю их на страницу с помощью выборки :
структура папок :
..
index.html
elements/
header.html
scripts/
scripts.js
содержимое . /scripts/scripts.js
insert_html("./elements/header.html", ".header");
function insert_html(text_from, insert_to) {
fetch(text_from)
.then(response => {
return response.text()
})
.then(data => {
document.querySelector(insert_to).innerHTML = data;
});
}
Раньше он работал довольно хорошо до недавнего времени, теперь он сломан на локальном, но он все еще работает онлайн, я думаю, потому fetch()
что замените относительный путь https://example.com/file
URL-адресом веб-сайта, когда он подключен к Сети, но он заменяет его file:///path/to/the/file
URL-адресом в local
Действительно, причина, по которой он сломался, связана с исправлением безопасности, поставляемым с Firefox 68, здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp о запросах с перекрестным источником, потому что разрешение извлекать другой файл в том же каталоге было pbm, так что теперь вы больше не можете использовать file:///
путь
Как я могу заставить его работать локально? Я не знаю, как использовать https://
путь для локального использования?
Комментарии:
1. как упоминалось в документации, на которую вы ссылались …. измените
privacy.file_unique_origin
предпочтение — хотя локальный http-сервер (не обязательно https) является лучшим вариантом для разработки — и есть из чего выбирать2. Вы пробовали использовать localhost ? Вам понадобится веб-сервер, работающий локально на вашем компьютере, но это выполнимо.
3. Если у вас установлен python, вы можете разместить свои файлы локально, просто запустив
python -m http.server
в каталоге, который вы хотите разместить4. хорошо, запуск сервера — единственный вариант? такое ощущение, что я буду использовать тяжелый процесс для простого выполнения небольшого html js? @Bravo, извините, я не понимаю всего вашего ответа, из-за моего плохого уровня владения английским вы говорите, что когда я нахожусь на этапе разработки, лучшим вариантом является запуск локального сервера, а не просто запуск кода с помощью браузера непосредственно из file,
> firefox index.html
, eventhoufh я не использую серверную частьнапример, php или node.js или базы данных ? и затем вы добавляете «есть так много на выбор» , так много чего? так много способов запуска локального сервера?5. так много решений http-сервера на выбор… и … Я не говорил, что «сервер — единственный вариант»… Я указал, что документация, на которую вы ссылались (и, очевидно, не читали), имеет обходной путь… то есть измените
privacy.file_unique_origin
настройки — вот как вы заставляете firefox 68 работать как 67