• Больной вопрос: принятие cookie при кросс-доменных запросах?

    pavelkarinin
    @pavelkarinin Автор вопроса
    Full Stack Web Developer
    Буквально перед публикацией проекта, отвечаю себе (а может и другим, в том числе dimonchik2013) на собственный вопрос. Когда я задавался этим вопросом, у меня физически не было возможности проверить свои предположения, поскольку на тот момент только продумывались разные нюансы. Сложность вопроса заключалась по большей части в том, что браузеры по-разному ведут себя со сторонними куки + личные настройки пользователей. И по сей день нет единого рецепта для 100% простановки куки при кросс-доменных запросах, хотя некоторые подвижки есть (но это отдельная тема).

    Вопрос был решён комбинированием уже имеющихся практик решения данной проблемы, а именно так: на странице first.com размещаем пустой и невидимый iframe, в него загружаем страницу с домена second.com, которая исполняет сценарий, создавая форму, с методом POST и action-адресом, по которому в ответ сервер выставит куки (разумеется, для second.com, как в моем случае и было необходимо). После этого iframe средствами postMessage может "информировать" родительское окно, что все прошло гладко или что-то случилось в свою очередь родительское окно удалить этот iframe. Все браузеры с включёнными куки, но с разными установками на предмет принятия сторонних куки прекрасно справились с этим сценарием.

    5ae8e00c87193831000117.jpeg

    Хочу так же заметить: часто вижу (и даже на Хабре есть такой пример), что вместо формы для таких случаев используют еще одни вложенный iframe с адресом , по которому сервер выставит куки - не стоит этого делать, так как такой способ срабатывает не во всех браузерах, нужен именно POST запрос и именно на форму (особенно для Safari).

    В моем случае таких разных second.com должно быть 4, поэтому описанный выше сценарий запускается в цикле для каждого необходимого домена. В итоге весь процесс проходит параллельно для этих перечисляемых доменов. Задержки, связанные с временем загрузки контента в iframe, отправки форм и получения ответа в моем сценарии не имеют значения, но учитывая размер кода для создания и ее отправки вес там минимальный, остальное зависит от сети и скорости отдачи на сервере. В моем случае это не играет большой роли.
    Ответ написан
    Комментировать
  • Как разобраться с typescript?

    @gooddaytoday
    1. Попробуйте начать с официального руководства. Есть также документация Typescript на русском языке
    2. Перейдите к любой книге по паттернам проектирования. Самая известная - "Банда четырех" - Gang of four. Typescript по синтаксису похож на C# и C++, а в этих книгах чаще всего объясняются паттерны на основе классов подобных языков.
    3. Если хочется углубиться в разработку приложений enterprise уровня (в плане объема кода), для чего Typescript подходит просто идеально, то прочтите заодно "Совершенный код". Это просто блестяще написанное руководство по созданию ПО высокого класса, которое подойдет для любого языка.
    4. Возьмите свой старый JS код и перепишите его на TS. После этого вы поймете преимущества наследования TS, типов, интерфейсов и др. плюшек TS. И научитесь понимать, в каких случаях применять, например, интерфейсы, как их описывать и др.
    5. Переходите к продакшен-коду.
    Ответ написан
    Комментировать