Что такое CORS (Cross-Origin Resource Sharing), и как он относится к встроенным элементам типа <iframe>, <img>, и <script>?

Этот вопрос проверяет знание механизма CORS и его применения при работе с элементами, загружающими ресурсы с других доменов. Важно понять, как обеспечивается безопасность данных при кросс-доменных запросах.

Короткий ответ

CORS — это механизм, который позволяет ограничить или разрешить обмен данными между разными доменами. Браузеры по умолчанию запрещают запросы к ресурсам с другого домена для обеспечения безопасности. Чтобы разрешить такие запросы, сервер должен отправить специальные заголовки. Элементы, такие как <iframe>, <img> и <script>, могут загружать ресурсы с других доменов, но для некоторых операций, например, доступа к содержимому <iframe> из другого домена, требуется поддержка CORS.

Длинный ответ

CORS (Cross-Origin Resource Sharing) — это политика безопасности веб-браузеров, которая предотвращает выполнение кросс-доменных HTTP-запросов, если сервер явно не разрешил их. Она нужна для защиты веб-приложений от атак типа CSRF (Cross-Site Request Forgery) и XSS (Cross-Site Scripting).

 

Как работает CORS:
Когда браузер пытается получить ресурс с другого домена, он отправляет предварительный запрос (preflight) с заголовком OPTIONS, чтобы узнать, разрешает ли сервер доступ. Если сервер разрешает запросы с другого домена, он отправляет ответ с заголовком Access-Control-Allow-Origin, в котором указан разрешенный домен (или символ *, что означает любой домен).

 

Пример заголовков CORS:

Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Methods: GET, POST

Эти заголовки позволяют браузеру понять, что запросы с домена https://example.com могут быть выполнены.

 

CORS и встроенные элементы:

  • <iframe>: Без поддержки CORS, доступ к содержимому iframe с другого домена будет заблокирован. Это защита от манипуляций с контентом, загружаемым из сторонних источников.
  • <img> и <script>: Эти теги могут загружать ресурсы с других доменов без ограничений, но доступ к загруженным данным (например, к пикселям изображения) будет блокирован, если сервер не поддерживает CORS.

 

Пример использования CORS с fetch():

fetch('https://api.example.com/data', {  
	method: 'GET',  
	headers: {    
		'Origin': 'https://mywebsite.com'  
	} 
}) 
.then(response => response.json()) 
.then(data => console.log(data)) 
.catch(error => console.error('Ошибка:', error));


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

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • HTMl

    HTMl

Ключевые слова

Подпишись на React Developer в телеграм