как получить файл в том же каталоге в javascript, начиная с firefox 68

#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