#reactjs #post #cors #fetch
Вопрос:
Я использую Google формы, чтобы сделать запрос на публикацию из интерфейса моего приложения. В приложении есть пользовательская форма, и я использую Google forms для отслеживания ответов. Я пытаюсь сделать запрос на публикацию, но я продолжаю получать ошибку CORS, когда запрос был сделан. Я перепробовал несколько различных типов контента, но безрезультатно. Я надеялся, что кто-нибудь сможет мне здесь помочь.
Получена ошибка:
Access to fetch at 'https://docs.google.com/forms/d/e/1FAIpQLScXpwaAVEzgbI7SJfLDAxduZP-3dJRvraiYgxEspA2Kof8-gA/formResponse' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Код
const google_url = "https://docs.google.com/forms/d/e/1FAIpQLScXpwaAVEzgbI7SJfLDAxduZP-3dJRvraiYgxEspA2Kof8-gA/formResponse" const request = new Request(google_url, { method: 'POST', headers: { 'Accept': 'text/html; charset=utf-8', 'Content-Type': 'text/html; charset=utf-8', }, body: JSON.stringify({ 'GOOGLE-FORM ID': handleNameChange, 'GOOGLE-FORM ID': handleEmailChange, 'GOOGLE-FORM ID': handleMessageChange, }) }); fetch(request) .then(response =gt; { console.log(response) }) .catch(err =gt;{ console.log(err) })
Комментарии:
1. Я продолжаю получать ошибку CORS […] Что говорится в сообщении об ошибке? Эта информация должна быть в вашем вопросе.
2. Обновленный вопрос с полученной ошибкой, извините, что для меня это довольно поздно, поэтому я совершенно забыл вставить его
3. попробуйте запустить приложение как можно безопаснее, добавьте «пуск»: «HTTPS=true react-запуск сценариев» и запустите. Это приведет к незащищенному соединению. затем просто используйте продолжить в любом случае или введите «ЭТО безопасно», вы сможете получить доступ. Вы не получаете защищенное соединение из-за отсутствия SSL-сертификатов, добавленных для локальных.
Ответ №1:
Выполните следующую команду в своей оболочке:
curl -s -D - -o /dev/null -XOPTIONS -H 'Origin: http:localhost:3000' -H 'Access-Control-Request-Method: POST' 'https://docs.google.com/forms/d/e/1FAIpQLScXpwaAVEzgbI7SJfLDAxduZP-3dJRvraiYgxEspA2Kof8-gA/formResponse'
Выходные данные не содержат заголовков ответов CORS, необходимых для успешной проверки контроля доступа перед полетом, что указывает на то, что рассматриваемая конечная точка не поддерживает CORS.
Если не считать использования некоторых (безопасных!) CORS прокси, вы мало что можете сделать со своей стороны.