#javascript #ajax #cors #xmlhttprequest
#javascript #ajax #корс #xmlhttprequest #cors
Вопрос:
Мой интерфейс запущен на localhost: 8080, а мой сервер — на localhost: 3000. Я хотел бы отправить запрос из моего интерфейса на сервер. Когда я это делаю, я получаю следующую ошибку:
Доступ к XMLHttpRequest по адресу ‘localhost:3000/create-sharable-url’ из источника ‘http://localhost:8080 ‘ заблокирован политикой CORS: запросы перекрестного происхождения поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https.
Я использую протокол http, так почему же я должен получать эту ошибку?
Я пытаюсь сделать запрос из localhost
протокола, поэтому эта ошибка заставляет меня думать, что это просто невозможно сделать. Но, с другой стороны, отправка запроса от вашего клиента на ваш сервер в режиме разработки кажется невероятно распространенным требованием.
Поиск в Google, похоже, указывает мне на то, как установить заголовки CORS в ответе. Я уже устанавливаю заголовки на своем сервере (используя пакет npm cors), но я решил, что все равно попробую. Но у меня это не сработало. Не работало расширение Access-Control-Allow-Origin: * Chrome, а также запуск Chrome с флагом отключить веб-безопасность.
Клиентский JS
createSharableEquityCalculatorURL: function (storeState) {
let data = this._constructEquityCalculatorData(storeState);
return Vue.axios.post(`${process.env.BASE_API_URL}/create-sharable-url`, data);
},
Комментарии:
1. @ADyson Ах, точно. Итак, тогда это выглядит так, как будто протокол — http. Если да, то почему я должен получать сообщение об ошибке? Http указан в качестве одной из схем протоколов, которые поддерживаются в сообщении об ошибке.
Ответ №1:
Тот факт, что в нем говорится «Доступ к XMLHttpRequest по адресу ‘localhost:3000/create-sharable-url «, заставляет меня думать, что в вашем JS вы забыли поместить http://
в начале целевого URL.
Напишите это полностью в своем коде, т.Е. http://localhost:3000/create-sharable-url
Комментарии:
1. Я потратил 3 часа на поиск в Интернете, ничего не сработало, и это был ответ