огромная благодарность за разжовывание инфы. Сегодня пытался поженить Vue и Django и словил ступор. Благо сейчас есть GPT чат, но он так информацию подробно и исчерпывающе не предоставляет.
Я хз, как люди пишут, что им очень понравилось объяснение) Я практически вообще ничего не понял, и это при том, что уже как-то раз писал на бэке UseCors() с разрешающими политиками, чтобы подружить разные источники...
Нам очень жаль, что доклад не помог Вам лучше разобраться с CORS. Из контекста комментария не совсем понятно, что именно понять не получилось. На некоторые из вопросов мы также ответили в комментариях к этому видео. Возможно, ответы к этим комментариям помогут Вам понять то, что не удалось понять из видео.
Столкнулся с ошибкой CORS, и никак не могу понять. Да, действительно, при отправке запроса из браузера, получаю ошибку, но если обращаюсь по той же ссылке из python скрипта, ошибок нет, получаю полноценный ответ. Так в чем защита тогда?
Ошибка CORS (Cross-Origin Resource Sharing) возникает тогда, когда веб-страница, загруженная из одного домена, пытается отправить запрос на другой домен. Таким образом, ошибка CORS возникает из-за политики безопасности браузера, которая предотвращает выполнение запросов на другие домены. В Вашем случае использование Python позволяет обходить эту политику и выполнять запросы без ошибок, тк запросы отправляются не напрямую из браузера.
Добрый день. Спасибо за видео. Я сделал и все работает на локалхост, но перевел все на сервер и все перестало работать. Это проблема самого сервера ???
В начале чувак плохо объясняет. Даже немного будучи в курсе темы все равно трудно понять из-за обилия избыточных абстрактных терминов: «у вас есть некий закрытый ресурс». Дайте пример. Скажите, что например я из своего приложения хочу сделать запрос в интернет-банкинг пользователя. Дайте больше жизни в свои пояснения. Потом все достаточно подробно, спасибо!
Да, сервер должен сверяться со своей CORS конфигурацией перед тем, как отдавать ответ. Если запрашиваемый источник не входит в список доверенных источников, сервер может вернуть пустой ответ со статусом 403, но может и не возвращать. Вообще 403 статус имеет отношение к запрещению доступа к ресурсу. Поэтому на 403 статус будет влиять скорее не CORS, а другие факторы.
Никак не пойму по поводу CORS... каким образом сторонний сайт "от вашего имени" может отправить что то, если у него нет данных для аутентификации? Исходя из того, что у вас доступ есть, а у стороннего сайта нет, то механизм аутентификации точно есть... А если у злоумышленника есть данные для аутентификации, то что мешает ему подделать все прочие данные вообще не используя вас и браузеры в этой схеме? CORS выглядит как штука, которая почти не добавляет безопасности(если вообще добавляет), зато создает кучу проблем, особенно, людям, сталкивающимся с этим впервые...
CORS- зона ответственности исключительно браузера. Именно через браузер рядовой пользователь взаимодействует с веб-приложением и именно в браузере пользователь может столкнуться с различными атаками, направленными на его конфиденциальные данные. Дополнительно можно почитать csplite.com/ru/csp291/ и csplite.com/ru/csp150/
Спасибо за замечание. Хоть в конце видео и говорится о том, что это делает браузер, все же стоило об этом сказать более подробно и в начале. Постараемся учесть такие нюансы в наших будущих видео 😊
Хороший вопрос, хоть и не относится к CORS. Совсем простого способа "закрыть" API полностью для всех, кроме Вашего сайта и приложения, нет. В любом случае придется делать обработку запроса. Подходы к защите могут сильно отличаться в зависимости от требований конкретного проекта. Где-то может хватить ограничения доступа только авторизованным пользователям, например, с помощью JWT. Где-то могут использоваться какие-то другие токены, подписи. Где-то в теле запроса могут передаваться различные объекты с наборами генерируемых данных, благодаря которым можно быть практически уверенными, откуда пришел запрос. На самом деле это тема для огромной дискуссии. В каждом конкретном случае подход может быть разным.
В переводе origin и есть источник. Даже CORS (Cross-Origin Resource Sharing) будет звучать как "совместное использование ресурсов разных источников". На ресурсах амазона (aws.amazon.com/ru/what-is/cross-origin-resource-sharing/) и яндекса (cloud.yandex.ru/docs/glossary/cors) придерживаются такого же перевода и называют origin источником.
огромная благодарность за разжовывание инфы. Сегодня пытался поженить Vue и Django и словил ступор. Благо сейчас есть GPT чат, но он так информацию подробно и исчерпывающе не предоставляет.
Благодарю, в тумане начинает вырисовываться понимание запроса на сервер. 👦👍
Самое лучшее что я видел на эту тему
Просто подробнейшее и исчерпывающее объяснение
Спасибо огромное
Отличное видео! Наконец-то до меня дошло что такое cors👍
Спасибо большое. Просто и понятно.❤
Даже за год после выхода, никто из авторов не смог догнать эту тему по качеству... Браво
Лучшее объяснение
Потрясающее разьяснение!
Кто нажал дизлайк? Очень странные люди
Материал очень годный. Все хорошо разложил, все понятно
Круто. Всё по теме и без воды( наверное)))))
как всегда мощно и лайк от СЕООНЛИ
Я хз, как люди пишут, что им очень понравилось объяснение) Я практически вообще ничего не понял, и это при том, что уже как-то раз писал на бэке UseCors() с разрешающими политиками, чтобы подружить разные источники...
Нам очень жаль, что доклад не помог Вам лучше разобраться с CORS. Из контекста комментария не совсем понятно, что именно понять не получилось. На некоторые из вопросов мы также ответили в комментариях к этому видео. Возможно, ответы к этим комментариям помогут Вам понять то, что не удалось понять из видео.
Спасибо, очень крутое пояснение!
Столкнулся с ошибкой CORS, и никак не могу понять. Да, действительно, при отправке запроса из браузера, получаю ошибку, но если обращаюсь по той же ссылке из python скрипта, ошибок нет, получаю полноценный ответ. Так в чем защита тогда?
Ошибка CORS (Cross-Origin Resource Sharing) возникает тогда, когда веб-страница, загруженная из одного домена, пытается отправить запрос на другой домен. Таким образом, ошибка CORS возникает из-за политики безопасности браузера, которая предотвращает выполнение запросов на другие домены. В Вашем случае использование Python позволяет обходить эту политику и выполнять запросы без ошибок, тк запросы отправляются не напрямую из браузера.
жаль этот момент не затронули в видео. Можно закрепить этот коммент.
Добрый день. Спасибо за видео. Я сделал и все работает на локалхост, но перевел все на сервер и все перестало работать. Это проблема самого сервера ???
Здравствуйте! Необходимо провести настройки на Вашем сервере для разрешения кросс-доменных запросов.
В начале чувак плохо объясняет. Даже немного будучи в курсе темы все равно трудно понять из-за обилия избыточных абстрактных терминов: «у вас есть некий закрытый ресурс». Дайте пример. Скажите, что например я из своего приложения хочу сделать запрос в интернет-банкинг пользователя. Дайте больше жизни в свои пояснения.
Потом все достаточно подробно, спасибо!
А должен ли сам сервер, перед тем как отдавать ответ, сверяться со своей CORS конфигурацией, и в случае чего возвращать пустой ответ со статусом 403?
Да, сервер должен сверяться со своей CORS конфигурацией перед тем, как отдавать ответ. Если запрашиваемый источник не входит в список доверенных источников, сервер может вернуть пустой ответ со статусом 403, но может и не возвращать. Вообще 403 статус имеет отношение к запрещению доступа к ресурсу. Поэтому на 403 статус будет влиять скорее не CORS, а другие факторы.
Никак не пойму по поводу CORS... каким образом сторонний сайт "от вашего имени" может отправить что то, если у него нет данных для аутентификации? Исходя из того, что у вас доступ есть, а у стороннего сайта нет, то механизм аутентификации точно есть... А если у злоумышленника есть данные для аутентификации, то что мешает ему подделать все прочие данные вообще не используя вас и браузеры в этой схеме? CORS выглядит как штука, которая почти не добавляет безопасности(если вообще добавляет), зато создает кучу проблем, особенно, людям, сталкивающимся с этим впервые...
CORS- зона ответственности исключительно браузера. Именно через браузер рядовой пользователь взаимодействует с веб-приложением и именно в браузере пользователь может столкнуться с различными атаками, направленными на его конфиденциальные данные. Дополнительно можно почитать csplite.com/ru/csp291/ и csplite.com/ru/csp150/
@@ZeBrains вот этого в видео и не хватает. А то кажется, что сам сервер непосредственно блочит запрос.
Спасибо за замечание. Хоть в конце видео и говорится о том, что это делает браузер, все же стоило об этом сказать более подробно и в начале. Постараемся учесть такие нюансы в наших будущих видео 😊
К примеру у меня есть сайт и приложение как мне запретить пользоваться апишкой все ресурсы кроме моего сайта и приложения?
Хороший вопрос, хоть и не относится к CORS. Совсем простого способа "закрыть" API полностью для всех, кроме Вашего сайта и приложения, нет. В любом случае придется делать обработку запроса. Подходы к защите могут сильно отличаться в зависимости от требований конкретного проекта. Где-то может хватить ограничения доступа только авторизованным пользователям, например, с помощью JWT. Где-то могут использоваться какие-то другие токены, подписи. Где-то в теле запроса могут передаваться различные объекты с наборами генерируемых данных, благодаря которым можно быть практически уверенными, откуда пришел запрос. На самом деле это тема для огромной дискуссии. В каждом конкретном случае подход может быть разным.
я у себя на сайте сделал white list. Только с разрешённых ip можно обратится к бэку
10:30 у https порт будет 443 а не 80
Ну можно же было Origin говорить а не источники, ну такая путаница потом в голове, как отступы блин в css которые не отступы нифига
В переводе origin и есть источник. Даже CORS (Cross-Origin Resource Sharing) будет звучать как "совместное использование ресурсов разных источников". На ресурсах амазона (aws.amazon.com/ru/what-is/cross-origin-resource-sharing/) и яндекса (cloud.yandex.ru/docs/glossary/cors) придерживаются такого же перевода и называют origin источником.
Это сугубо браузерная хрень. На бэке такого не возникает
Все верно 👍