HTML - Веб CORS: Пособие для начинающих
Здравствуйте, начинающие веб-разработчики! Сегодня мы отправимся в увлекательное путешествие в мир CORS. Не волнуйтесь, если вы никогда раньше не слышали о нем - к концу этого руководства вы将成为 экспертом по CORS! Так что возьмите любимый напиток, устройтесь поудобнее и погружайтесь с нами!
Что такое CORS?
CORS означает Cross-Origin Resource Sharing (перекрестное compartir ресурсов). Я знаю, что это звучит как-то сложно, но позвольте мне объяснить это с помощью забавной аналогии.
Представьте, что вы находитесь в элегантном ресторане (это ваш веб-браузер) и хотите заказать еду из ресторана напротив (это другой веб-сайт). Обычно элегантный ресторан не разрешит это, потому что они хотят, чтобы вы ели их еду. Но с CORS это как если бы элегантный ресторан сказал: "Конечно, заказывайте из ресторана напротив!" Это способ для веб-браузеров безопасно разрешать веб-сайтам запрашивать ресурсы с других веб-сайтов.
Почему нам нужен CORS?
Вearly days веба, браузеры имели строгую политику безопасности под названием Same-Origin Policy (политика одного источника). Эта политика предотвращала веб-сайты от выполнения запросов к другим доменам, что было很好 для безопасности, но не так хорошо для функциональности.
По мере развития веба, разработчикам потребовался способ безопасно выполнять перекрестные запросы. Вот где и появился CORS, предоставляя безопасный метод для серверов ослаблять политику одного источника и разрешать определенные перекрестные запросы.
Как работает CORS?
CORS работает через��列 HTTP заголовков. Когда веб-страница выполняет запрос к другому домену, браузер добавляет особый заголовок Origin
к запросу. Затем сервер отвечает заголовками, которые告诉 браузеру, разрешен ли запрос.
Давайте рассмотрим простой пример:
<!DOCTYPE html>
<html>
<head>
<title>Пример CORS</title>
</head>
<body>
<h1>CORS в действии</h1>
<button onclick="makeRequest()">Создать запрос</button>
<script>
function makeRequest() {
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
}
</script>
</body>
</html>
В этом примере, когда вы нажимаете кнопку, она пытается получить данные из https://api.example.com/data
. Если сервер на api.example.com
настроен правильно, он включит заголовки в свой ответ, которые позволят вашей веб-странице получить доступ к данным.
Выполнение запроса CORS
Теперь давайте углубимся в то, как выполнять запрос CORS. Мы будем использовать Fetch API, который является современным и мощным способом выполнения сетевых запросов в JavaScript.
fetch('https://api.example.com/data', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Этот код отправляет GET запрос на https://api.example.com/data
. Ответ сервера определит, был ли запрос успешным или нет.
Если CORS настроен правильно на сервере, вы увидите данные в консоли. Если нет, вы получите ошибку CORS, которая может выглядеть так:
Access to fetch at 'https://api.example.com/data' from origin 'http://yourwebsite.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Не паникуйте, если видите эту ошибку! Это просто означает, что сервер не настроен для разрешения запросов с вашего веб-сайта.
Обработчики событий в CORS
Работая с CORS, важно обрабатывать как успешные ответы, так и ошибки. Давайте изменим наш предыдущий пример, чтобы включить обработчики событий:
<!DOCTYPE html>
<html>
<head>
<title>CORS с обработчиками событий</title>
</head>
<body>
<h1>CORS с обработчиками событий</h1>
<button onclick="makeRequest()">Создать запрос</button>
<div id="result"></div>
<script>
function makeRequest() {
fetch('https://api.example.com/data')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
document.getElementById('result').textContent = JSON.stringify(data);
})
.catch(error => {
console.error('Error:', error);
document.getElementById('result').textContent = 'Произошла ошибка: ' + error.message;
});
}
</script>
</body>
</html>
В этом примере мы добавили обработчики событий как для успешных ответов, так и для ошибок. Если запрос успешен, мы отображаем данные на странице. Если есть ошибка, мы показываем сообщение об ошибке.
Методы CORS
CORS поддерживает различные HTTP методы. Вот таблица, резюмирующая最常见的 из них:
Метод | Описание |
---|---|
GET | Получает данные с сервера |
POST | Отправляет данные на сервер для создания нового ресурса |
PUT | Отправляет данные для обновления существующего ресурса на сервере |
DELETE | Запрашивает удаление ресурса на сервере |
HEAD | Подобно GET, но получает только заголовки, а не тело |
OPTIONS | Используется для описания коммуникационных опций для целевого ресурса |
помните, что сервер должен быть настроен для разрешения этих методов для запросов CORS.
Заключение
Поздравляю! Вы только что сделали первые шаги в мир CORS. Мы рассмотрели, что такое CORS, почему он необходим и как выполнять базовые запросы CORS. Помните, CORS - это все о том, чтобы сделать веб более взаимосвязанным, сохраняя при этом безопасность.
По мере продолжения вашего пути в веб-разработке, вы встретите CORS в множестве различных ситуаций. Не бойтесь ошибок CORS - это просто возможности узнать больше о том, как работает веб!
Продолжайте практиковаться, stay curious, и счастливого кодирования!
Credits: Image by storyset