локальная html страница на основе данных из интернета
Есть рейтинг: https://alpari.com/ru/invest/pamm/
там более 3000 счетов. Полный рейтинг получается запросом:
xhr.open('GET', 'https://alpari.com/invest/pamm/rating.json', true);
частичный: https://alpari.com/invest/pamm/rating.json?limit=25
так получилось, что сначала я скачал и распарсил рейтинг в shell js, это js файлы, запускающиеся из проводника, тотал коммандера... не из html. Далее я читаю этот и похожие json с диска уже из js в html, для этого в мозилле понадобилось изменить настройку: about:config -> security.fileuri.strict_origin_policy -> false (кнопка Read from disk)
Это cross domain request/ CORS / сервер альпари вряд ли будет вставлять в заголовок: Access-Control-Allow-Origin: *
Нужно как-то решить проблему. Поиск в интернете выводит на всякие хаки, но они основаны на том, что у меня есть свой сервер, откуда я получаю страницы и их части. Я же формирую страницу локально, на основе данных из других доменов через XMLHttpRequest Также, в этом html мне надо сохранять json'ы. Делаю это через 'FileSaver.min.js':
var blob = new Blob([jsonData], {type: "application/json"}); saveAs(blob, 'Saved.json');
И при этом нужно чтобы пользователь сам далее сохранял. В принципе, подходит, но хочется не грузить пользователя работой.
Далее, можно открыть любой счет, например:
https://alpari.com/ru/invest/pamm/329842/#pamm-return
и там есть кнопка скачать. Дают скачать почасовые данные за последний месяц в json (не более чем за месяц)
запрос на скачивание данных легко находится по F12 в мозиле:
https://alpari.com/chart/pamm/329842/return/daily.json - дневной, работает из shell js, но не из html
https://alpari.com/api/ru/pamm/329842/monitoring/hourly_all_candle.json?start=2020-02-01&end=2020-02-14 - часовой. не работает даже если в браузер вставить (forbidden), но сами данные скачать можно, вручную.
Это тоже нужно как-то победить. Может запрос как-то не так достал по F12 в mozilla, вкладка network
Итог - нужно подружить вместе все "фичи"
Способ через БД + Apache использовать не хочу - лишний гемор. Html в этом случае просто так не передашь... (например, сюда, чтобы попросить помощь)
Буду рад узнать о способах решения описанных проблем, лучше чем мои.
выбрал html т.к. очень удобно формировать и менять то что видит пользователь + могу подключить графики от google, но, возможно, технологию выбрал не удачно
упрощённый пример, с которым можно поиграться: https://drive.google.com/open?id=1GYOegEqw2ej5B4coJ_2Zv3bnoMbllUHY
Ответы (1 шт):
В общем, проблему CORS в Mozilla решил установкой плагина "Cross Domain - CORS". "CORS Anywhere" не позволяет простым способом добавить разрешенные сервера. И, вроде бы, отправляет запросы через какой-то свой сервер, что не очень хорошо (сервер может тупить или закрыться)
Доступ к локальным файлам пытался победить с помощью user.js:
user_pref("privacy.file_unique_origin", false);
user_pref("security.fileuri.strict_origin_policy", false);
user_pref ("capability.policy.localfilelinks.sites", "file:///e:/myDataFolder/test.json");
user_pref ("capability.policy.localfilelinks.checkloaduri.enabled "," allAccess ");