Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238

Ограничения CORS для fetch запросов в локальную сеть из локальных файлов

29.12.2025, 12:02. Показов 491. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть локальный (в файловой системе схема file://) хтмл файл, нём из скриптов делаются fetch запросы к устройству в локальной сети (http://). Теперь все браузеры на основе хром стали блокировать такие действия как запрещённые CORS. В фаерфоксе работоспособность ещё сохраняется. Это ардуно устройство управления полуумным домом и размещать на нём большие и часто изменяемые файлы не вариант. Сделал на устройстве маленькую страничку прокладку, которая затягивает локальный файл в iframe, но есть косяки восстановления состояния страницы после возвращения. Как можно кросплатформенно (что бы работалдо в браузерах десктоп и андроид) обойти эту проблему блокировки запросов и вернуть работоспособность fetch запросов из локальных фалов в локальную сеть?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.12.2025, 12:02
Ответы с готовыми решениями:

fetch no-cors
отправляю такой запрос из поисковой строки браузера:...

Как забрать данные из внешнего js функция({объект}) без fetch и CORS
Здравствуйте. Через JSONP забираю данные из внешнего js Все хорошо получается, если название...

cors ошибка в fetch
Здравствуйте. Подскажите, пожалуйста. Методом тыка вышло, что в коде ниже в fetch возникает cors...

17
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3839 / 1688 / 431
Регистрация: 14.03.2022
Сообщений: 4,296
29.12.2025, 14:45
Цитата Сообщение от stele Посмотреть сообщение
Есть локальный (в файловой системе схема file://) хтмл файл, нём из скриптов делаются fetch запросы к устройству в локальной сети (http://).
...
Как можно кросплатформенно (что бы работалдо в браузерах десктоп и андроид) обойти эту проблему блокировки запросов и вернуть работоспособность fetch запросов из локальных фалов в локальную сеть?
Предложу "перевести" xml-файлы в js-файлы, пусть и с тем же содержимым, только в виде текстовой строки...

tmp.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const xmlString = `
<Root>
  <Customers>
    <Customer CustomerID="GREAL">
      <CompanyName>Great Lakes Food Market</CompanyName>
      <ContactName>Howard Snyder</ContactName>
      <ContactTitle>Marketing Manager</ContactTitle>
      <Phone>(503) 555-7555</Phone>
      <FullAddress>
        <Address>2732 Baker Blvd.</Address>
        <City>Eugene</City>
        <Region>OR</Region>
        <PostalCode>97403</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
    <Customer CustomerID="HUNGC">
      <CompanyName>Hungry Coyote Import Store</CompanyName>
      <ContactName>Yoshi Latimer</ContactName>
      <ContactTitle>Sales Representative</ContactTitle>
      <Phone>(503) 555-6874</Phone>
      <Fax>(503) 555-2376</Fax>
      <FullAddress>
        <Address>City Center Plaza 516 Main St.</Address>
        <City>Elgin</City>
        <Region>OR</Region>
        <PostalCode>97827</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
    <Customer CustomerID="LAZYK">
      <CompanyName>Lazy K Kountry Store</CompanyName>
      <ContactName>John Steel</ContactName>
      <ContactTitle>Marketing Manager</ContactTitle>
      <Phone>(509) 555-7969</Phone>
      <Fax>(509) 555-6221</Fax>
      <FullAddress>
        <Address>12 Orchestra Terrace</Address>
        <City>Walla Walla</City>
        <Region>WA</Region>
        <PostalCode>99362</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
    <Customer CustomerID="LETSS">
      <CompanyName>Let's Stop N Shop</CompanyName>
      <ContactName>Jaime Yorres</ContactName>
      <ContactTitle>Owner</ContactTitle>
      <Phone>(415) 555-5938</Phone>
      <FullAddress>
        <Address>87 Polk St. Suite 5</Address>
        <City>San Francisco</City>
        <Region>CA</Region>
        <PostalCode>94117</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
  </Customers>
</Root>
`
Работа с такими "данными"

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const fetchScript = (url, cb) => {
    const script = document.createElement('script');
    script.src = url;
    script.addEventListener('load', () => cb());
    document.body.append(script);
};
const fn = () => {
    // xmlString должна быть в загружаемом файле
    //console.log(xmlString)
    const parser = new DOMParser();
    const xml = parser.parseFromString(xmlString, "text/xml");
    const on = xml.getElementsByTagName('CompanyName')
    for (const o of on) {
        console.log(o.textContent)
    }
    
}
 
fetchScript('file:///C:/tmp/tmp.js', fn);
Вполне себе кросплатформенно и кросбраузерно...

А если данные будут еще и не в строке, а массиве или объекте, да хоть в json - так вообще будет еще проще!
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238
29.12.2025, 14:57  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
xml-файлы в js-файлы
У меня нет xml. У меня один html файл, содержащий и скрипты и стили (на мобильных иначе не открыть из файловой системы) и с обновлением хрома во всех браузерах на его основе отвалились fetch запросы к устройству в скриптах. И предвидя совет - да устройство возвращает заголовоки:
C++
1
2
  client.println(F("Access-Control-Allow-Origin: *"));
  client.println(F("Content-Type: text/plain"));
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3839 / 1688 / 431
Регистрация: 14.03.2022
Сообщений: 4,296
29.12.2025, 15:04
Цитата Сообщение от stele Посмотреть сообщение
У меня нет xml. У меня один html файл содержащий и скрипты и стили
Значит я не то увидел...

Если на компе запустить (через npx) локальный сервер, который и будет открывать ту страничку - тогда можно будет делать запросы.

Страница будет доступна по локальной сети по протоколу http://...
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238
29.12.2025, 15:38  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Если на компе запустить (через npx) локальный сервер, который и будет открывать ту страничку - тогда можно будет делать запросы.
Нету компьютера ради этого всё и затевалось. Есть только смартфон и устройство с очень ограниченным сервером, которому обработать 200к файл тяжко. Сейчас содержимое страницы загружается в localStorage браузера (потому что нельзя в целях безопасности без взаимодействия с пользователем обратиться к диалогу выбора файлов), потом маленькой страничкой с устройства со скриптом это содержимое передаётся в iframe.srcdoc. Но очень много лишних телодвижений и браузеры не держат её промежуточного состояния на свернул-развернул норовят обновить страничку и сбросить все значения инпутов и селектов форм. Как разрешить кросспротокольные запросы фетч в хромосновных мобильных браузерах и ещё беспокоит - не пойдёт ли и фаерфокс на поводу у этой моды (хотя он на смарфонах всё одно не умеет толком открывать локальные файлы)?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3839 / 1688 / 431
Регистрация: 14.03.2022
Сообщений: 4,296
30.12.2025, 09:51
stele, http:// запросы из file:// давно уже начали прикрывать...
Я думал уже совсем невозможны...

Добавлено через 7 минут
Цитата Сообщение от stele Посмотреть сообщение
Есть только смартфон и устройство с очень ограниченным сервером
Смотри чего нашел...
Tiny Web Server!
https://translated.turbopages.... eb-server/

Посмотрел в ГуглПлей - оно там есть.
Это вебсервер на твоем смартфоне!
Он конечно простенький... Но html-странички запускает.

Добавлено через 3 минуты
stele, можно вообще вот так извращаться...
https://ru.linux-console.net/?p=6317

Добавлено через 4 минуты
stele, либо найти простенький хостинг и на нем организовать все свои хотелки...
Правда тут уже возникают вопросы с безопасностью.
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238
30.12.2025, 10:56  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
http:// запросы из file:// давно уже начали прикрывать...
Я думал уже совсем невозможны...
Да вот до последнего времени нормально всё работало и тут вдруг месяц другой назад сюприз вышел. Ну ладно, сношу хром, ставлю вивальдю и через месяц и оно туда же Только в фаерфоксе нормально работает. Но на мобильном фаерфокс локальные файлы без костылей не открывает.

Цитата Сообщение от krvsa Посмотреть сообщение
либо найти простенький хостинг и на нем организовать все свои хотелки...
И опошлить идею, что можно со смартфона громкость на музыкальном центре покрутить и температуру в батарее глянуть без связи с вселенским космосом. Тогда уж надо в хобийном рукоприкладстве с ардуины на esp мигрировать, оно в нормальный вебсервер умеет.

Добавлено через 8 минут
Цитата Сообщение от krvsa Посмотреть сообщение
Tiny Web Server!
https://translated.turbopages.... eb-server/
Посмотрел в ГуглПлей - оно там есть.
Что-то мне гуглплей такого не находит, в нём только Simple HTTP Server есть. Надо будет глянуть.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3839 / 1688 / 431
Регистрация: 14.03.2022
Сообщений: 4,296
30.12.2025, 11:29
Цитата Сообщение от stele Посмотреть сообщение
в нём только Simple HTTP Server есть
О, точно!
Просто я искал именно "Tiny Web Server" и ГП показал мне именно это в авто подстановке...
А при клике перевел именно в Simple HTTP Server.
Вот только я этого не заметил и просто стал смотреть чего он может...

По описанию это может тебе подойти.
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238
30.12.2025, 11:46  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
По описанию это может тебе подойти.
Смущает только опять лишнее действие - запустить сервер. Оно ж как бывает, хмурое утро и так хочется "нажми на кнопку - получишь результат". И уж кажется может быть просто поставить старую версию бравзера только для этого, если уж нет ни какого способа отмены этого ограничения.
0
Эксперт .NET
 Аватар для Usaga
14303 / 9388 / 1354
Регистрация: 21.01.2016
Сообщений: 35,397
30.12.2025, 12:05
Цитата Сообщение от stele Посмотреть сообщение
И опошлить идею, что можно со смартфона
А почему идея подразумевает использование других технологий?..

Цитата Сообщение от stele Посмотреть сообщение
Нету компьютера ради этого всё и затевалось.
А, понятно. Маргинальщина.
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238
30.12.2025, 12:30  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
А почему идея подразумевает использование других технологий?..
Потому что так называемые универсальные пульты управления бытовой мультимедия техникой сильно ограничены в своей функциональности. А так средствами HTML+CSS+JS можно рисовать произвольные раскладки, использовать разнообразные макросы (последовательности команд) и ИК коды которых нет на штатном пульте. Всё это можно легко редактировать когда приспичит в любом текстовом редакторе сиюминутно здесь и сейчас, без всяких компиляций под андроид, линукс или винду.
Цитата Сообщение от Usaga Посмотреть сообщение
А, понятно. Маргинальщина.
При чём здесь маргинальщина, ну можно из сумки достать ноутбук и с него точно также управлять. А смартфон он всегда есть на виду и включён.
0
Эксперт .NET
 Аватар для Usaga
14303 / 9388 / 1354
Регистрация: 21.01.2016
Сообщений: 35,397
30.12.2025, 12:44
Цитата Сообщение от stele Посмотреть сообщение
Потому что так называемые универсальные пульты управления бытовой мультимедия т
Я имел в виду другое: чому не использовать нативные для мобилки технологии?
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238
30.12.2025, 13:20  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Я имел в виду другое: чому не использовать нативные для мобилки технологии?
Ну оно как-то так исторически сложилось. Страничка на хтмл оказалась некоей универсальной панацеей. Не надо создавать приложение для мобилки, паралельно не надо создавать приложение для десктопа (еслиж он включён то незачем отрываться от мышки в поисках смартфона), универсальный ксамарин в какой-то момент достал и проект на несколько сотен мегабайт схопнулся в страничку на несколько сотен килобайт с основой на такой кострукции:
JavaScript
1
2
const resp = await fetch(`http://192.168.1./${aaa}?${bbb}`, { cache: "no-store" });
const resptxt = await resp.text();
Каковая до последнего времени запускалась и редактировалась без проблем как угодно где угодно. А теперь как угодно и где угодно она стала запускаться только в десктопном фаерфоксе.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3839 / 1688 / 431
Регистрация: 14.03.2022
Сообщений: 4,296
30.12.2025, 13:55
stele, а говорил компа нет...
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238
30.12.2025, 13:57  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
а говорил компа нет...
Его нет как промежуточного звена. Он часто выключен, когда надо чем-то управлять.
0
Эксперт .NET
 Аватар для Usaga
14303 / 9388 / 1354
Регистрация: 21.01.2016
Сообщений: 35,397
31.12.2025, 04:26
Цитата Сообщение от stele Посмотреть сообщение
А теперь как угодно и где угодно она стала запускаться только в десктопном фаерфоксе.
Таков путь самурая)
0
Эксперт .NET
 Аватар для Rius
13136 / 7696 / 1677
Регистрация: 25.05.2015
Сообщений: 23,479
Записей в блоге: 14
31.12.2025, 11:55
Включить в wifi сеть esp32 за 300 рублей, которая будет хостить html со своего веб сервера, нельзя?
0
54 / 51 / 17
Регистрация: 29.02.2016
Сообщений: 238
31.12.2025, 14:08  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Включить в wifi сеть esp32 за 300 рублей, которая будет хостить html со своего веб сервера, нельзя?
Можно. Но эзернет шилд W5100 на esp32 вынул-вставил не меняется. Тут ещё больше думать придётся. Была у меня надежда, что может быть я какую-нибудь опцию в fetch запросе упускаю, ну или ещё пяток каких волшебных строчек JS и бравзерный CORS перестанить блочить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.12.2025, 14:08
Помогаю со студенческими работами здесь

Как у запроса fetch использовать что-то наподобие beforesend из запроса $.ajax()
Как у запроса fetch использовать что-то наподобие beforesend из запроса $.ajax()

Загрузка данных с другого сайта. Cors запрос
Привет! Столкнулся с проблемой, уже достаточно давно, и постоянно выкручивался через костыли, на...

Chrome и CORS запросы
Добрых времени суток. Есть рабочий плагин для firefox, который использует CORS запросы к нескольким...

Завершение запроса с ошибкой cors по событию onload
Здравствуйте! Не могу понять причину поведения кода. Токен извлекается, запрос отправляется, но при...

Отправить запрос обойдя CORS policy
Добрый день. Как считать json? Постоянно ошибка Access to fetch at 'http://localhost:3002/' from...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru