Чтобы выполнить CORS-запрос с помощью Curl, необходимо передать HTTP-заголовок Origin, который указывает происхождение запроса (домен, схема или порт), отличное от адреса сервера назначения, и, опционально, необходимые HTTP-методы и заголовки ответа. Чтобы передать Curl дополнительные заголовки, используйте параметр командной строки -H, например -H "Origin: [URL]" для заголовка Origin.
1 2 | curl -H "Origin: https://example.example.com" https://example.com/echo |
В этом примере Curl CORS мы отправляем запрос на адрес example.com и передаем серверу заголовок Origin с субдоменом.
Что такое Curl?
Curl - это инструмент командной строки, который позволяет пользователям передавать данные по сети. Он поддерживает более 25 протоколов, включая HTTP, HTTPS, FTP, FTPS и SFTP. Curl используется для тестирования API, загрузки файлов, просмотра содержимого ответа сервера, а также имеет встроенную поддержку веб-форм, SSL, HTTP Cookies. Curl работает в Linux, Mac, Windows.
Что такое CORS?
CORS (Cross-Origin Resource Sharing) - это механизм безопасности, основанный на HTTP-заголовках, которые обеспечивают безопасную связь между браузерами и серверами, работающими на серверах разного происхождения. Cross-Origin Resource Sharing позволяет веб-странице с одного домена или Origin получить доступ к ресурсу с другим доменом (кросс-доменный запрос). CORS был внедрен из-за ограничений политики одного происхождения. Однооригинальная политика ограничивает взаимодействие ресурсов только с ресурсами, расположенными в том же домене. CORS - это способ, с помощью которого сервер может проверить, поступает ли запрос от разрешенного источника, и сообщить браузеру, чтобы тот не блокировал его.
Синтаксис CORS-запроса Curl
Чтобы отправить CORS-запрос с помощью Curl, используйте следующий синтаксис:
Синтаксис CORS-запроса Curl
1 | curl -H "Origin: [Origin]" [URL] |
Пример CORS-запроса с помощью Curl
Пример отправки CORS-запроса на URL ReqBin с помощью Curl. Для выполнения CORS-запросов с помощью Curl вам необходимо предоставить заголовок Origin для ваших запросов:
1 | curl -H "Origin: https://example.example.com" https://example.com/echo |
Как отладить CORS-запросы с помощью Curl?
Ниже приведены примеры отладки CORS-запросов с помощью Curl:
Отправка обычного CORS-запроса
При отправке обычного CORS-запроса с флагом --verbose ответ сервера будет содержать заголовок Access-Control-Allow-Origin, который можно просмотреть и проанализировать.
1 2 3 | curl https://example.com/echo -H "Origin: https://example.example.com" --verbose |
Отправка "предполетного" запроса OPTIONS
Вы можете отправить "предполётный" запрос OPTIONS. Если предварительный запрос будет успешным, ответ будет содержать заголовки отклика Access-Control-Allow-Origin, Access-Control-Allow-Methods и Access-Control-Allow-Headers, которые можно просмотреть и проанализировать.
1 2 3 4 5 | curl https://example.com/echo -H "Origin: https://example.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: X-Requested-With" -X OPTIONS |