• Что такое CORS?

    @DrVolk
    Все ответы из серии лучше бы молчал... Смысл повторять то, что написано в википедии. Вам в вопросе человек явно указал - НА ПАЛЬЦАХ, а они ему про стандарты... Дали бы просто ссылку на MDN - там самая лучшая документация обо всём: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    На русском тоже есть статьи: https://grishaev.me/cors

    Вот моя текущая проблема, объсняю на её примере:

    На нашем сервере (Сервер А) размещается Ангуляр приложение (DAPP), представляющее собой интерфейс к Ethernet смарт-контракту, который грубо говоря является нашим бэкендом.

    На стороннем сервисе (Сервер Б) запущен http-интерфейс для доступа к нашему контракту (фактически это шлюз в сеть Ethereum). Это бесплатный сервис, к которому у нас нет доступа (Infura).

    Мне нужно из моего DAPP, запущенного в браузере пользователя и которое загрузилось с Сервера А, делать http-запросы на Сервер Б, и тут в браузере выскакивает CORS и кричит НИИИИЗЯЯЯЯЯЯЯЯ! Причём в Chrome всё ок, а в долбаном тормозном Firefox (господи, сократи число пользующиегося им идиотов, чтобы он скорее издох) вылетает ошибка. Ибо, как завещает CORS, негоже JS коду, загруженному с одного адреса, делать http запросы на другой. Причём CORS устроен так, что эта ошибка не дебажится с помощью JS - типа для того чтобы это ограничение не смогли никак обойти. Поэтому какие бы я не прописывал Серверу А заголовки 'Allow-Origin', это ничего не меняет. В Гугле уже осознали весь идиотизм ситуации и в новых версиях Хрома уже не блочат всё подряд, как раньше, пропуская “простые” запросы (GET/POST), остальный браузеры пока тупят.

    ПС. Проблему решили запуском прокси сервера, который добавляет в ответы от Сервера 2 заголовки Access-Controll-Allow-Origin с адресом Сервера 1. Тоесть Сервер 2 должен сказать браузеру, что он доверяет коду, загруженному с Сервера 1. Вот и весь CORS.
    Ответ написан
    1 комментарий
  • Как Telegram Desktop нормально работает из коробки без прокси?

    Moskus
    @Moskus
    Сдались вам эти proxy.

    Для успешной работы клиентского приложения мессенджера в условиях блокировок не обязательно, чтобы соединение было через proxy, VPN или что-то еще. Достаточно, чтобы хотя бы один сервер не был заблокирован. Когда серверы меняются постоянно, это условие достаточно просто выполняется. Для поддержания работы приложения в долговременной перспективе, достаточно менять IP серверов быстрее, чем их блокируют. Что и происходит с Телеграмом.

    Вероятно, вы спросите, а как же тогда сайт Телеграма? А очень просто: сайт заблокировать на порядок легче, так как DNS сходу отдает все IP, на которых он хостится. Потому, для доступа к сайту вам и нужен VPN или proxy, так как у блокирующей стороны в этой ситуации - преимущество.

    Что касается SMS с кодом - их блокировка также затруднена, как и блокировка клиентского приложения, потому что слать эти SMS можно, используя самые разные шлюзы, так что по исходящему номеру заблокировать их нельзя. По содержимому их тоже не так просто заблокировать, потому что "коды подтверждения" приходят и от других сервисов.
    Ответ написан
    Комментировать
  • Как Telegram Desktop нормально работает из коробки без прокси?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Например, такая нехитрая схема, которая напрашивается первой.

    Пусть у нас есть 1000 прокси в разных частях света.
    Делим всех юзеров РФ на 100 частей и каждой части даём свой прокси.
    Некоторые из этих прокси блокируются, но не все, потому что РКН тогда должен запариться подключением из разных частей.
    Каждую часть юзеров, в которой спалили прокси, мы снова делим на 100 частей и раздаем им свои прокси.
    Таким образом, постепенно вымываем аккаунты и ipшники, с которых РКН ищет прокси.

    Примерно это же касается новых подключений. Новых юзеров пускаем на прокси, которые не жалко, причем частями. Если какая та часть сидит на прокси долго и этот прокси не банится, то юзеров можно перевести на основной прокси.

    В общем, это война пули и брони. Как ты понимаешь, выигрышной стратегии нет. Но придумать можно много чего.
    Ответ написан
    Комментировать
  • Есть ли в VSCode горячая клавиша для отображения справки по функции?

    @alexstup
    Оркестр
    Тогда CTRL+K и за ним же CTRL+I (это i)
    В keyboards shortcuts называется Show hover, можете перебиндить
    Ответ написан
    Комментировать
  • В чём разница между транслятором и транспилятором?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    transpiler следует не переводить, а принимать как устоявшийся термин для трансляции кода между двумя языками, у которых примерно одинаковый уровень абстракции или другие зависимости.

    Грубо говоря, каждый транспилер - транслятор, но не каждый транслятор - транспилер.
    Ответ написан
    Комментировать
  • В чем разница между live-server и http-server?

    Xuxicheta
    @Xuxicheta
    инженер
    http-server - просто http сервер, минимум лишнего. Берет файлы и отправляет их по запросу браузера. Аналог apache, nginx, просто упрощенные, на ноде. Удобен чтобы быстро открыть содержимое папки в браузере.

    live-server, lite-server релоадят страничку, если изменились файлы. Сервер инжектит свой скрипт, который поднимает вебсокет соединение с сервером, что позволяет серверу отдать команду страничке на релоад.

    webpack-dev-server - вебпак собирает код из исходников в оперативе, дальше все тоже самое что у предыдущих двух. Встроен в Ангуляр и запускается командой ng serve

    Все вышеизложенное используется только в целях разработки. http-server еще можно втулить на боевой проект, но зачем, если есть nginx.
    Похожие сервачки есть у любого почти языка для бэкенда сейчас.
    Ответ написан
    2 комментария
  • Как запустить скомпилированное Angular2+ приложение и почему для этого нужен сервер?

    Xuxicheta
    @Xuxicheta Куратор тега Angular
    инженер
    Запустить для чего и где?
    sudo npm i -g http-server
    В папке с index.html
    http-server
    localhost:8080
    Ответ написан
    Комментировать
  • Почему не работают относительные пути в html файле?

    <base href="https://[username].github.io/[repo]/">

    Это можно изменять при сборке, указав в специальном флаге:
    ng build --prod --base-href https://[username].github.io/[repo]/
    Ответ написан
    2 комментария
  • Сокращение команд (автозаполнение) scss в vs code - как?

    MDiMaI666
    @MDiMaI666
    Талантливый программист
    да, нажми F1. и введиде snippets
    Ответ написан
    Комментировать
  • Почему не стартует clover?

    @Niter43
    >Что ему надо?
    >Ноутбук на атоме.
    Ему надо заменить вот это на что-то с SSE 4.1 и поддерживаемой графикой (GT2+ — свежие Core i3/5/7; в атомах/пентиумах GT1 https://en.wikipedia.org/wiki/Intel_Graphics_Technology )
    Ответ написан
    1 комментарий
  • Как сделать нормальный tooltip?

    svistiboshka
    @svistiboshka
    живые веб интерфейсы
    вот так будет правильней
    https://codepen.io/anon/pen/BMKBjy
    Ответ написан
    23 комментария
  • Атрибут Image::crossOrigin?

    twobomb
    @twobomb
    Я как -то писал что - то на canvas, там была попиксельная обработка изображений. То есть я брал холст с помощью функции getImageData и что- то там делал. Так вот если изображение находилось не на том же сервере что и мой сайт, то выскакивала какая - то ошибка, это типа защита такая. Так вот я вычитал на одном забугорном форуме, чтобы избежать этой ошибки (обойти эту защиту), то свойству crossOrigin объекта Image() , нужно присвоить 'Anonymous'. Может бред какой-то я написал, это давно было...
    Ответ написан
    Комментировать
  • Атрибут integrity простым языком?

    Stalker_RED
    @Stalker_RED
    Если указана контрольная сумма браузер должен проверить ее. Таким образом страхуемся от случайного или умышленного повреждения или от подмены подключаемых файлов.
    https://developer.mozilla.org/en-US/docs/Web/Secur...
    Ответ написан
    8 комментариев
  • Type="submit" для button лишний?

    Stalker_RED
    @Stalker_RED
    Вот краткое описание
    https://developer.mozilla.org/ru/docs/Web/HTML/Ele...

    Там в разделе атрибутов описан и type в том числе.

    И ссылки на спецификацию есть.
    Ответ написан
    Комментировать
  • Type="submit" для button лишний?

    @sidni
    Php Developer
    По правилам хорошего тона надо
    <input type="submit" value="Send Request">
    либо
    <button type="submit" value="Send Request">Send Request</button>
    Ответ написан
    4 комментария
  • AUTOINCREMENT в SQLite3

    difiso
    @difiso
    В параллельной вселенной я космонавт
    Вот такой запрос работает.
    CREATE TABLE IF NOT EXISTS `tbl` (
      `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
      `name` varchar(255) NOT NULL);
    


    Небольшой рецепт на будущее для решения подобных проблем: создаете визардом таблицу нужного вида и смотрите на скрипт создания.
    Ответ написан
    1 комментарий
  • AUTOINCREMENT в SQLite3

    Mithgol
    @Mithgol
    Вообще для изучания того синтаксиса SQL, который в SQLite применяется, надо http://sqlite.org/lang.html читать.

    В частности, по адресу http://sqlite.org/lang_createtable.html можно видеть диаграмму «column-constraint», согласно которой AUTOINCREMENT является модификатором при PRIMARY KEY.
    Ответ написан
    Комментировать
  • Как в Windows модифицировать PATH для быстрого вызова exe-шников MySQL?

    Audiophile
    @Audiophile Автор вопроса
    Помогли наконец разобраться. Path - это переменная, и в неё надо прописывать пути, т. е. каталоги, в которых будут искаться исполняемые файлы.
    Надо было зайти в переменные среды и добавить в переменную Path через точку с запятой: C:\Program Files\MySQL\MySQL Server 5.6\bin\
    Ответ написан
    Комментировать
  • Как увидеть диаграмму в MySQL WorkBench по готовой БД со всеми связями?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Нужно создать новую модель, в меню выбрать Database -> Reverse Engineer. Дальше там более-менее понятно.

    P.S. Ужасная, глючная неинтуитивная программа... По крайней мере под Линуксом.
    Ответ написан
    Комментировать