Итак, я работаю над этим приложением-викториной, которое использует API Gemini для формулирования вопросов. Мой интерфейс использует HTML, CSS и JavaScript (Vanilla), а серверная часть основана на Node.JS (Express).
Всякий раз, когда я отправляю запрос на выборку с помощью API-интерфейса Fetch с входными данными формы от пользователя, я всегда получаю этот ответ на консоли;
POST http://127.0.0.1:5500/genQuestions net::ERR_ABORTED 405 (Method Not Allowed)
См. соответствующий запрос index.js fetch ниже:
await fetch('http://127.0.0.1:5500/genQuestions', { // On the console, this line is usually marked red
method: 'POST',
headers: {
"Content-type": "application/json"
},
body: JSON.stringify(formObj), // The form Data Object
})
.then(response => {
// Handle the server's response
})
Экспресс JS:
// Setting up CORS this way
const cors = require('cors');
app.use(cors());
// Receive Post Requests
app.post('/genQuestions', async (req, res) =>{
const formData = req.body;
// Generate questions
})
Моя структура файлов с соответствующими файлами показана ниже: Изображение, показывающее структуру файлов проекта
Мой вопрос: как мне заставить мой сервер получать запросы на публикацию? Я чувствую, что возможность изменить «Разрешить: GET, HEAD, OPTIONS», включив в него «POST» (см. Заголовок ответа ниже), должна помочь, но я действительно не знаю, как это изменить.
Я ценю любой совет, который могу получить. Как я уже говорил ранее, я новичок в NodeJS.
См. заголовки ответов на вкладке «Сеть» ниже:
// Response Header from Network Tab
HTTP/1.1 405 Method Not Allowed
Access-Control-Allow-Origin: http://127.0.0.1:5500
Vary: Origin
Access-Control-Allow-Credentials: true
Allow: GET, HEAD, OPTIONS
Content-Length: 0
Date: Mon, 17 Jun 2024 11:09:23 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Для тех, кто спрашивает, я включил свои файлы index.js и server.js в этот Codepen. Там он не запустится, но я уверен, что вы сможете увидеть мой текущий код, который выдает сообщение «Метод 405 не разрешен». Ссылка на Codepen
Пожалуйста, покажите нам весь внутренний код. Что такое app? В каких файлах живут эти два фрагмента? Как вы запускаете приложение nodejs?
Показать весь блок кода.
Я включил код с обзором моего текущего кода. Вы можете увидеть изменения внизу вопроса @Bergi.
Привет, Джозеф! Кажется, это несоответствие URL-адреса запроса. '127.0.0.1:5500/genQuestions ' и ' 127.0.0.1:5500/gen_questions'
@WeDoTheBest4You, где ты видишь gen_questions?
@Bergi, это в index.js, код показан в CodePen, оператор такой ...await fetch('127.0.0.1:5500/gen_questions', {...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Во-первых, вы запрашиваете gen_questions в запросе на выборку, но на вашем сервере он определен как genQuestions. Во-вторых, вы используете 127.1.1.0. Вместо этого используйте localhost в своем запросе на выборку. Дайте мне знать, если это работает. Я проверил это на своей стороне, и оно работает отлично.
Это сработало. Мне пришлось сменить 127.0.0.1 на localhost. Сначала я подумал, что это также может заменять localhost😅 Спасибо. И о, «gen_questions» было изменением, когда я пробовал Axios.
127.0.0.1 тоже должен был работать, но я не знаю, почему этого не произошло. Похоже, есть проблемы с прокси или корсом.
Предыдущие сообщения в StackOverflow и другой связанный контент в Интернете обобщают следующие причины проблем такого рода.
Цитата:
app.post()должен разрешить принимать POST-запросы.