Axios / Chrome: неожиданный запрос на получение после запроса POST

#google-chrome #post #get #axios

#google-chrome #Публикация #получить #axios

Вопрос:

Я конвертирую текст в аудио. Идея состоит в том, чтобы отправить текст с запросом POST и получить аудио в виде ответа файла на тот же запрос POST. Серверная часть получает неожиданный запрос GET после запроса POST. Код Axios ниже:

     const response = await Axios({
        method: 'POST',
        url: url,
        responseType: 'blob',
        data: {
            text: textContent
        }
    }).then(response => {
        const blob = new Blob([response.data], {type: 'audio/mpeg'});
        var blobUrl = URL.createObjectURL(blob);
        let a = new Audio(url)
        a.play()
    })
  

Когда я возвращаю аудиофайл в запрос GET на серверной части, все работает так, как ожидалось.

(1) Почему я получаю запрос GET после моего запроса POST? Связано ли это с CORS Chrome?

(2) Каков наилучший способ предотвратить это? Я хотел бы отправлять текст и получать аудио как единую атомарную операцию, потому что я не хочу внедрять базу данных.

Комментарии:

1. Что у вас URL ? Есть ли у него косая черта в конце? Какова ваша внутренняя технология?

2. URL- 127.0.0.1:8000 / audio / data , я убедился, что в конце нет косой черты, серверная часть — Django

Ответ №1:

Когда я создавал аудиофайл, я должен был использовать ‘blobUrl’ вместо ‘blob’:

 let a = new Audio(blobUrl)
  

Эта строка вызвала неожиданный запрос на получение. Мне потребовалось несколько дней, чтобы найти эту ошибку, потому что я был полностью сосредоточен на том, как Chrome обрабатывает CORS и как Django обрабатывает промежуточное программное обеспечение и заголовки CORS.