gpt4 book ai didi

javascript - 向 Spring Controller 发送 JSON 时出现 406 错误

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

我有一个像这样的 jQuery ajax 调用:

            $.ajax({
type: "post",
url: url,
data: JSON.stringify(formSubmit),
contentType: "application/json",
dataType: "json",
success: function(xhr,status) {
console.log("Return Data:"+xhr.responseText)
});

我的 Controller 如下所示:

@RequestMapping(value = "/doIt", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public MyObject activityPerformed(HttpServletRequest request, HttpServletResponse response, @RequestBody String jsonData) {
logger.debug("JSON INPUT:"+jsonData);
MyObject o = new MyObject("STUFF");
return o;
}

这会引发 406 错误。我可以在浏览器中看到我的响应 header 中有以下内容:

Content-Type:"text/html;charset=utf-8"

我认为映射的生成部分应该已修复。

当我删除 ajax 调用的“contentType”时,我没有收到 406 错误,而是收到 URLEncoded 中的 jsonData 参数。不,我认为我可以进行解码,但我认为这不是“正确的”。

那么如何在 ajax 调用中没有 contentType: "application/json"的情况下将非 URL 编码的 JSON 发送到 Controller ?

或者如何设置 Controller 响应的 contentType?

最佳答案

Spring是负责发回406的一方。The Spring reference documentationJavaDoc将有助于阐明这一点。

来自引用文档:

[regarding the produces field] The request will be matched only if the Accept request header matches one of these values.

如果您添加正确的 Accept request header (sec 14.1),我希望您不再获得 406 HTTP 状态代码(application/json;charset=UTF-8 的值)到您的 ajax 请求。

关于javascript - 向 Spring Controller 发送 JSON 时出现 406 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322614/

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