CORS - Cross Origin Resource Sharing, Совместное использование ресурсов между разными источниками

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ธ.ค. 2024

ความคิดเห็น • 86

  • @schi8m487
    @schi8m487 12 วันที่ผ่านมา

    Красавчик. Все по делу и с тонкостями реализации

  • @denis_hromov
    @denis_hromov 4 ปีที่แล้ว +12

    За потраченное время автору уважение и большое спасибо.

  • @jaskier6295
    @jaskier6295 11 วันที่ผ่านมา

    Крутое видео, вроде проста тема и потому лень было изучать, но всё-таки тут есть некоторые моменты который в которые надо вникнуть, потому видео полезное

  • @ФотонНевструев
    @ФотонНевструев ปีที่แล้ว +4

    За вчера и за сегодня пересмотрел тонну видосов на эту тему. Только этот помог по настоящему разобраться в теме и решить проблему. Сегодня я нашел ответы на те вопросы, которые даже не знал как гуглить. Константин, если читаете, огромное вам спасибо. Ни в коем случае не забрасывайте канал.

    • @ДмитрийС-ш9б
      @ДмитрийС-ш9б ปีที่แล้ว

      он же вроде Евгений "валуе" Кувшинов😁

  • @sanya_kisliy
    @sanya_kisliy 4 หลายเดือนก่อน

    Очень качественное, крутое видео!! Для меня тема CORS раскрыта! Объяснение - вышка! Автору - респект!

  • @mrECMAScript
    @mrECMAScript 3 ปีที่แล้ว +4

    Для меня, как новичка в области CORS - видео просто потрясающее) Спасибо!

  • @lollolich2399
    @lollolich2399 3 ปีที่แล้ว +4

    Супер, отличное видео, то что я искал! Читал официальную докумментацию, было как-то трудно её воспринимать, в вашем видео всё наглядно и понятно, спасибо за годный контентыч

  • @winstonwolf2981
    @winstonwolf2981 4 ปีที่แล้ว +2

    Подача материала, примеры, изложение, все на уровне. Благодарность выражаю.

  • @imdanteasy
    @imdanteasy หลายเดือนก่อน

    Толковое видео. Благодарю!

  • @o_opedro4044
    @o_opedro4044 3 ปีที่แล้ว +6

    Спасибо, все сжато, и по делу... 👍

  • @АлександрГригорий-е6о
    @АлександрГригорий-е6о 4 ปีที่แล้ว +7

    Спасибо, очень понятное объяснение и примеры хорошие. Единственное пожелание это улучшить произношение терминов на английском языке). Удачи в развитии.

    • @kuvshinovee
      @kuvshinovee  3 ปีที่แล้ว

      учту, буду произносить нормально термины

  • @YevhenB-j3u
    @YevhenB-j3u 3 ปีที่แล้ว +1

    Автор, огромнейшее спасибо за видео - мало того что разложил все по полочкам, но еще и написал middleware, который можно использовать. Респект

  • @MrPahan252
    @MrPahan252 ปีที่แล้ว +1

    Евгений, спасибо большое! Это самый наглядный материал по этой теме который я только встречал

  • @ВикторЩербаков-ь4б
    @ВикторЩербаков-ь4б 4 ปีที่แล้ว +2

    Отличное видео! Странно, что там мало лайков и просмотров. Автор большой молодец

  • @ЕвгенийМакаренко-ш1ъ
    @ЕвгенийМакаренко-ш1ъ 3 ปีที่แล้ว +3

    Спасибо за контент, подкрепил знания

  • @ЕвгенийЖ-н6м
    @ЕвгенийЖ-н6м 3 ปีที่แล้ว +2

    Молодец!, очень просто и классно все рассказал!

  • @dogober3861
    @dogober3861 2 ปีที่แล้ว +1

    Спасибо огромнейшее!!!! Дико выручил и шикарно объяснил🤩

  • @ulibkaify
    @ulibkaify 4 ปีที่แล้ว +2

    Огромное спасибо! CORS я использовал, но понимание самого механизма наступило только сейчас

    • @kuvshinovee
      @kuvshinovee  4 ปีที่แล้ว

      спасибо за донат

  • @ОленаНехрищинюк
    @ОленаНехрищинюк 6 หลายเดือนก่อน +1

    С меня подписка и лайк. Без воды. Качественно ☺

  • @Yurii-t6u
    @Yurii-t6u 3 ปีที่แล้ว +1

    очень классное объяснение, спасибо автору!

  • @theapostal9311
    @theapostal9311 6 หลายเดือนก่อน

    Самое лучшее и понятное объяснение очень сложной темы, большое спасибо!

  • @Deemix1000
    @Deemix1000 3 ปีที่แล้ว +5

    Супер видос! Очень полезно. Только еще замечу что в ларавел есть встроенный механизм coors. C 7 версии вроде.

    • @kuvshinovee
      @kuvshinovee  3 ปีที่แล้ว +1

      да хотел об этом механизме рассказать
      но случайно показал как он устроен (он как раз через middleware работает)

  • @dmytrolemesh6458
    @dmytrolemesh6458 3 ปีที่แล้ว

    Огромная благодарность автору видео. Ваше время не было потрачено зря!

  • @brothers_karamazovs
    @brothers_karamazovs 4 ปีที่แล้ว

    Мне бы это видео лет 6 назад... Эх, столько бы «боли» прошло мимо))
    Спасибо, отличный выпуск.

  • @kondor198714
    @kondor198714 2 ปีที่แล้ว +1

    Привет подскажите пж, например на сайте, идет прямая трансляция, ну во всяком случае так должно быть) а можно определить, запись это, или трансляция? заранее спс

  • @denisshulga7539
    @denisshulga7539 5 หลายเดือนก่อน

    Добрый день! А почему при запросе со стандартным значением для Content-Type: application/json на 18:26 предварительный запрос происходит, а на 20:30 с использованием Content-Type: multipart/form-data его нет? Как и с text/plain. Это какое-то исключение для значения application/json/? И второй момент, на 20:50 меняется значение заголовка на text/plain1,но на стороне сервера определен заголовок application/json, а запрос все равно считается успешным, почему?

    • @kuvshinovee
      @kuvshinovee  5 หลายเดือนก่อน +1

      я в видео объяснил, да это исключение, но это исключение не для application/json
      если отсылается post запрос и там передаются только определенные заголовки вроде (Accept, Accept-Language, Content-Language с любыми значениями или Content-Type со значениями multipart/form-data или text/plain и тд в видео я перечислил) то в таких случаях не отправляются предварительные запросы с OPTIONS так как запрос считается "стандартным"
      что касается 20:50 то я ставлю значение Content-Type: text/plain1 это НЕ СТАНДАРТНОЕ значение и браузер отправляет запрос с OPTIONS чтобы проверить можно ли так обращаться и сервер ответил что Content-Type присылать можно, все это хорошо видно на 20:57

  • @АндрейБугаев-р8ю
    @АндрейБугаев-р8ю 2 ปีที่แล้ว +1

    спасибо за видео . Очень понятно обьяснил

  • @pauluslucceius7486
    @pauluslucceius7486 4 ปีที่แล้ว +3

    А пример из 27:00 прямо из реального опыта? Прямо диковато выглядит когда в команде есть девопс, а коммуникации между фронтои и беком никакого.

    • @kuvshinovee
      @kuvshinovee  4 ปีที่แล้ว +3

      к сожалению да реальный опыт
      суть сводится к тому что решили собирать в "последний день" перед релизом и когда запускали именно тут и возникли ошибки cors, раньше их не было.
      поэтому решение принимали максимально быстро :)
      девопс уже успел нагуглить решение дополнив nginx.conf костыльными заголовками и задеплоив это.

  • @qqqq-kv1fo
    @qqqq-kv1fo 4 ปีที่แล้ว +1

    Не пойму чем тогда 'HTTP_ORIGIN" отличается от * если у всех фронтов реквестов есть эти ориджины, то чем же тогда сужается диапазон допуска ? В чем отличие ?

    • @kuvshinovee
      @kuvshinovee  4 ปีที่แล้ว +3

      HTTP_ORIGIN это в PHP в действительности он берет из запроса заголовок Origin который проставляет браузер поддерживающий cors.

  • @ЕвгенийПетрушенко-ъ6р
    @ЕвгенийПетрушенко-ъ6р 3 ปีที่แล้ว

    Спасибо большое! Очень полезное видео!!!

  • @ОлексійФарина-р2ю
    @ОлексійФарина-р2ю 3 ปีที่แล้ว

    Очень круто. Спасибо!

  • @shumilus
    @shumilus 3 ปีที่แล้ว

    огромное спасибо автору. Самый полный и понятный материал который я смог для себя найти на просторах интернета на русском языке )

  • @qqqq-kv1fo
    @qqqq-kv1fo 4 ปีที่แล้ว +2

    Не пойму кто в опасности тогда без механизма корс ? клиент получается ? то есть кросссайт может получить данные моих куков для оридижна получается так ? Или наоборот якобы 8080 в потенциальной опасности что к нему лезу из 8000 ? - не пойму в чем для него тогда опсасность ..

    • @kuvshinovee
      @kuvshinovee  4 ปีที่แล้ว +3

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

    • @qqqq-kv1fo
      @qqqq-kv1fo 4 ปีที่แล้ว +1

      @@kuvshinovee Ааа , понятно )) Плохой сайт это сам ориджин - 8080 , а 8000 это типо "банк" . Вот гад такой !

  • @liko8019
    @liko8019 2 ปีที่แล้ว +1

    а еще htp, вот это действительно много нового узнал

  • @mo_llya
    @mo_llya 3 ปีที่แล้ว +1

    Спасибо за видеоурок, у меня такая проблема, например если апи вернет ошибку, то тогда выведется cors errors,а если 200 все норм,как можно решить ?

    • @kuvshinovee
      @kuvshinovee  3 ปีที่แล้ว +2

      скорей всего при ошибках не проставляются заголовки, отсюда и cors error

  • @ant1k-1
    @ant1k-1 7 หลายเดือนก่อน

    хорошее видео без воды, спасибо

  • @maksimmalakhov1229
    @maksimmalakhov1229 2 ปีที่แล้ว

    Очень хорошее объяснение темы

  • @konstantinMonty
    @konstantinMonty 3 ปีที่แล้ว +1

    Добрый день, скажите пожалуйста а вы создавали куку на клиенте или на сервере-апи, к которому клиент-браузер обращается? Вообще как создавали куку? Дело в том я выставил все заголовки,настройки credentials в положительно и на сервере и в fetch на клиенте, создаю куку коде на сервере, прописывая там в php setcookie('name','value', time()+600)). Затем с клиента делаю fetch на адрес сервера-апи (там пара строк кода где указаны нужные заголовки и код создания куки вышеуказанный). И ничего не происходит. Кука так и не передается в заголовках запроса. Как именно создать куку чтобы она передавалась, где ее создавать в коде на сервере-апи, или в коде js на клиенте? Можете подробно описать механизм пожалуйста.

    • @kuvshinovee
      @kuvshinovee  3 ปีที่แล้ว +1

      Я создавал куку на клиенте, в браузере или через консоль или через плагин для управления куками сайта (для сайта api.localhost:8000).
      я думаю у вас небольшое непонимание того как работают куки и рассказывать это в комментарии ну такое себе, попробуем.
      браузер при заходе на сайт по "url" определяет какие куки ему слать, например если ты заходишь на example.com то он собирает один список кук в запросе, когда ты с этого сайта делаешь запрос на api.example.com тут список кук может быть другим.
      Установка куки возможно только до того момента пока не стал отправлять html body.
      Дополнительно у кук есть еще такое понятие как secure и httponly (в твоем случае оба варианта false), еще не забывай о домене и path
      Если у тебя api.example.com устанавливает куку, то при заходе на example.com ты ее видеть не будешь, ты ее сможешь видеть если сделаешь http запрос на api.example.com (как я это сделал я открывал один сайт localhost:8080 а уже внутри него делал запрос на api.localhost:8000 и вот у второго запроса отправлялась куки только в том случае если я указывал credentials: 'include' и при этом api.localhost:8000 возвращало заголовок CORS РАЗРЕШАЮЩИЙ обращаться сюда с куками)

    • @kuvshinovee
      @kuvshinovee  3 ปีที่แล้ว +1

      мой простой совет зайдите туда где должна устанавливаться кука
      запустите отладчик и посмотрите какие куки вам установлены, на какой срок, какой домен и path и после поробуйте обновить страницу чтобы убедиться что куки отсылаются.
      ну и как я говорил отправка http заголовков (cookie это http заголовок по сути) возможна только до момента отправки http body

    • @konstantinMonty
      @konstantinMonty 3 ปีที่แล้ว +1

      @@kuvshinovee Странно вчера ответил, два раза и комментарий так мой и не появился. На всякий случай уточню у вас еще раз. Спасибо за ответ! Вопрос как у вас межсайтовые куки работали без установленных атрибутов SameSite = None и Secure?

    • @kuvshinovee
      @kuvshinovee  3 ปีที่แล้ว +1

      @@konstantinMonty да я видел текст в уведомление на почте, но не видел комментарий под видео, думал удалил автор за не актуальностью.
      По поводу как они работали SameSite надо проставлять в хроме и его производных начиная с 80 версии и только в случае если куки вы ставите в апихе.
      В виде куку я ставил через плагин для управления кусками в браузере(оно не требует установки атрибута, просто момент установки куки я не показывал) поэтому оно работало
      На тему SameSite у как возможно стоит сделать отдельное видео как и про работу с куками

    • @konstantinMonty
      @konstantinMonty 3 ปีที่แล้ว +1

      ​@@kuvshinovee Ну хорошо что уведомление о тесте видели, видимо ютуб не пропускает текст с кусками кода, хотя я даже экранировать их пытался....И даже видел что коммент остался, а потом захожу раз и нету. Если по теме:
      С samesite выходит огромная ж...чтобы протестировать взаимодействие своего локального сайта со своим локальным апи, когда локальному сайту нужно отсылать куку на локальный апи, то это можно сделать только по https, то есть на локалке нужно как то настроить https у обоих хостов локального сайта и апи. Или только у хоста апи...в общем если будет возможность пожалуйста сделайте видео насчет такого взаимодействия...я 4 дня ковырялся, мне нужно было отправить на апи с своего сайта куку приписанную не к апи, а к сайту, в которой находиться id сессии чтобы апи скушало id сессии из этой куки и выдало обработав этот id данные пользователя. Но как отправить куку на апи, если эта кука задается не самим апи, а сайтом и тут меня постиг крах. А потом еще и эти SameSite = None и Secure с его https....В общем сейчас стараюсь придумать чтобы id сессии передавался в заголовке authorization. Ну ладно это так история, может кто читать будет и на мои грабли не нарвется.

  • @tecs77
    @tecs77 ปีที่แล้ว

    Большое спасибо. Помог очень

  • @Dendor3519
    @Dendor3519 2 ปีที่แล้ว

    Спасибо, очень полезно!!!

  • @MakarenkoSasha
    @MakarenkoSasha ปีที่แล้ว

    Все по делу. реально помог!

  • @Sa1ahaddin
    @Sa1ahaddin 8 หลายเดือนก่อน

    Спасибо за видео, очень понравилось, что детально и с примерами ❤
    Если еще произношение английских слов подтянете, вообще шикарно будет. А то Валуе вместо вэлью (value) чет режет уши))

  • @inbuckswetrust7357
    @inbuckswetrust7357 2 ปีที่แล้ว +3

    метод path ? не смотря на оговорки большое спасибо автору

  • @liko8019
    @liko8019 2 ปีที่แล้ว +2

    htpp, хм....
    интересный протокол, никогда не слышал😁

  • @v-bro6954
    @v-bro6954 3 ปีที่แล้ว

    Спасибо, большое

  • @grishavydr
    @grishavydr 4 ปีที่แล้ว +3

    А как консоль разработчика в хроме перевести на русский?

    • @kuvshinovee
      @kuvshinovee  3 ปีที่แล้ว +1

      export LANG=ru_RU.UTF-8
      chromium

  • @nikitachechet6510
    @nikitachechet6510 3 ปีที่แล้ว +1

    top

  • @СтаниславОкулов-о2ч
    @СтаниславОкулов-о2ч 2 ปีที่แล้ว

    Зачет

  • @ЕгорЛазука-й1э
    @ЕгорЛазука-й1э ปีที่แล้ว

    большое спасрбо

  • @AndrewLapteff
    @AndrewLapteff ปีที่แล้ว

    Грааль

  • @grantorino3465
    @grantorino3465 ปีที่แล้ว

    Спасибо, видео очень полезное

  • @qqqq-kv1fo
    @qqqq-kv1fo 4 ปีที่แล้ว

    Можете еще по теме кэша сделать объемлющее видео ?? Такую тему раскусили , а ту и подавно смогёте .. И еще по бы по аутентификации )

    • @kuvshinovee
      @kuvshinovee  4 ปีที่แล้ว +1

      по аутентификации и авторизации есть в планах, но позже

  • @yehorpolishchuk8877
    @yehorpolishchuk8877 3 ปีที่แล้ว +7

    Видео хорошее, информативное.
    Но есть масса оговорок.
    В том числе неплохо бы научиться читать английский и хотя бы перестать "патч" называть "пафом".

    • @krava6733
      @krava6733 3 ปีที่แล้ว

      пиф паф

  • @anatoliiilescu839
    @anatoliiilescu839 2 ปีที่แล้ว

    Нужен курс по Laravel!!!!!

    • @kuvshinovee
      @kuvshinovee  2 ปีที่แล้ว

      врятли он будет, не представляю что можно рассказать чего нет в документации.

  • @laticalamonzi2814
    @laticalamonzi2814 2 ปีที่แล้ว +1

    ...и, внезапно, CORS PNA =(

    • @kuvshinovee
      @kuvshinovee  2 ปีที่แล้ว +1

      PNA пришло в хроме 98 версии в качестве эксперимента и на момент записи видео я ещё с ним не сталкивался, но да полезно было бы добавить про это

    • @laticalamonzi2814
      @laticalamonzi2814 2 ปีที่แล้ว +1

      @@kuvshinovee я поняла, поэтому и поставила грустный смайлик. выхода, вроде бы всего два: https и Access-Control-Allow-Private-Network:true...

    • @kuvshinovee
      @kuvshinovee  2 ปีที่แล้ว +1

      @@laticalamonzi2814 тут надо подумать каких целей охото добиться
      пользователи сайт не будут видеть в приватных сетях, они будут его видеть на продакшене, значит PNA их не коснется и им заголовок не нужен.
      разработчику PNA можно отключить с помощью флагов в браузере или с помощью расширений отключающих CORS ну либо в локалке отправлять новый заголовок
      поэтому PNA в большей степени касается разработчика

    • @laticalamonzi2814
      @laticalamonzi2814 2 ปีที่แล้ว

      @@kuvshinovee да, да, вот нас-то, в основном, и касается =)

  • @alexander551
    @alexander551 2 ปีที่แล้ว +1

    Я реально заснул на 20 минуте

  • @viv81ster
    @viv81ster 3 ปีที่แล้ว

    Почему PATCH это паф а не пэтч?

    • @kuvshinovee
      @kuvshinovee  3 ปีที่แล้ว

      неправильно произносил, но по видео ряду понятно о чем идет речь

  • @wisp011
    @wisp011 ปีที่แล้ว +2

    С английским, конечно, у тебя бедулька.. а так вроде много что по делу...

  • @InsureInvest
    @InsureInvest 11 หลายเดือนก่อน

    Bhai hindi bhasha me video bana le 😂

  • @Павел-б1д3я
    @Павел-б1д3я 3 ปีที่แล้ว

    Полезная инфа, спасибо👍👍