gpt4 book ai didi

javascript - 通过Ajax POST方法发送FormData返回403

转载 作者:行者123 更新时间:2023-12-02 11:06:05 24 4
gpt4 key购买 nike

我编写了一个带有语音识别的应用程序。我想要的只是录制一些语音并将其发送到服务器,在那里我将其转换为文本。我在发送该声音文件时遇到问题。我使用 p5.js 库录制语音,当我尝试下载它时没有问题。

问题是当我尝试使用ajax将其发送到服务器时。

script.js

function toggleRecording(e) {
if (e.classList.contains("recording")) {
recorder.stop();
e.classList.remove("recording");
sendAudioToServer(soundFile)
} else {
e.classList.add("recording");
recorder.record(soundFile);
}
}

function sendAudioToServer(soundFile)
{
var data = new FormData();
data.append('fname', 'test.wav');
data.append('data', soundFile);

console.log(soundFile);
console.log(data);

$.ajax({
type: 'POST',
url: '/recognizeCommand',
data: data,
dataType: 'jsonp',
processData: false,
contentType: false,
success: function(data) {
alert("works!");
},
error: function() {
alert("not works!");
}
})

Java Controller

@PostMapping("/recognizeCommand")
public @ResponseBody String recognizeCommand(@RequestParam MultipartFile mpf) {
try {
byte[] bytes = mpf.getBytes();
SpeechRecognitionApplication.logger.info(bytes);
} catch (IOException e) {
e.printStackTrace();
}
return "finish";
}

当我停止录制时,无论 toggleRecording 功能如何,它都应该停止录制并将其发送到服务器。 sendAudioToServer 函数存在问题。以下是 Chrome 控制台的结果:

enter image description here

enter image description here

我不确定,但 FormData 可能有问题。正如你所看到的,当我在控制台中打印它时它是空的。在这里建立了一些类似的问题,但没有解决方案来解决我的问题。

编辑:

添加dataType: 'jsonp'

有这个错误:

enter image description here

编辑2:添加csrf token 后:

enter image description here

最佳答案

请按此添加 csrf token 。

    <meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>

在标题中:

var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");

设置标题。

$.ajax({
type: 'POST',
url: '/recognizeCommand',
data: data,
dataType: 'json',
processData: false,
contentType: false,
beforeSend: function(xhr) {
// here it is
xhr.setRequestHeader(header, token);
},
success: function(data) {
alert("works!");
},
error: function() {
alert("not works!");
}
})

尝试在此处添加调试点。

 SpeechRecognitionApplication.logger.info(bytes);

关于javascript - 通过Ajax POST方法发送FormData返回403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com