#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.