406(浏览器接收的响应类型和服务器返回的响应类型不匹配)

也就是说,浏览器所接收的数据格式与服务器响应的数据格式是不匹配的。

浏览器接收的数据格式一般可以是任意格式,但是我们在发起Ajax请求时就已经确定了要接收的是Jsonp格式

响应的数据类型定义在的content-type中:

这就很奇怪了,我们明明使用的返回类型是ResponseEntity,而ResponseEntity与@ResponseBody注解类似,都会尝试将数据解析为json格式,为什么这里的MediaType会变成:text/html呢?

原因找到了:

默认情况下,SpringMVC会注册一个ContentNegotiationStrategy,是根据路径进行MediaType的判断,如果路径是.html,那么响应类型就一定是html

此时我们的返回值即便使用了ResponseBody或者ResponseEntity也没有用,自然后续会出现数据类型的不匹配,报406错误就可以理解了


解决方法:

1.修改SpringMvc的拦截方式不再拦截.html;

2.修改SpringMvc的拦截方式,除了拦截.html外再添加新的路径匹配

如:

来自为知笔记(Wiz)

原文地址:https://www.cnblogs.com/xiaolige/p/8490990.html

时间: 2024-10-29 04:52:14

406(浏览器接收的响应类型和服务器返回的响应类型不匹配)的相关文章

将javabean转为map类型,然后返回一个map类型的值

/**     *将javabean转为map类型,然后返回一个map类型的值      * @param obj     * @return     */    public static Map<String, Object> beanToMap(Object obj) {        Map<String, Object> params = new HashMap<String, Object>(0);        try {            Prope

服务器返回状态码解析

服务器返回的各种状态码到底表示什么意思呢,哪些说明没有问题,哪些返回状态是出问题了,这个返回状态码表示的是什么意思,下面是服务器各种返回状态码的意义: 100(继续)请求者应当继续提出请求.服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分. 101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备进行切换. 200(成功)  服务器已成功处理了请求.通常,这表示服务器提供了请求的网页.如果您的robots.txt文件显示为此状态,那么,这表示Googlebo

Nginx 当上游服务器返回失败时的处理办法

95 Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 |http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...; Default: proxy_next_upstream error timeout; Context: http, server, location 生效前提:没

PHP. 01. C/S架构、B/S架构、服务器类型、服务器软件、HTTP协议/服务器、数据库、服务器web开发、PHP简介/常见语法、PHPheader()、 PHP_POST/GET数据获取和错误处理

C/S架构 Client/Server 指客户端,服务器 架构的意思 优点:性能性高:可将一部分的计算工作放在客户端上,服务器只需处理出局即可   洁面炫酷,可使用更多系统提供的效果 缺点:更新软件需版本同步 不同设备访问:必须安装了客户端才能登陆 B/S架构 Browser /Server 指浏览器, 服务器.是WEB兴起后的一种结构 优点:更新简洁,对用户来说只需刷新浏览器即可   多设备同步:只要能够使用浏览器即可登录 缺点:性能较低:当时随着硬件性能的提升,这个差距在缩小   浏览器兼容

从输入 URL 到浏览器接收的过程中发生了什么事情?

从输入 URL 到浏览器接收的过程中发生了什么事情? What really happens when you navigate to a URL 上面两篇文章都解读的很好,值得阅读. 接下来在总结一下这个过程: 1.首先,会查询缓存,如果缓存存在的话则直接响应,否则继续下面过程: 2.当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询.这能使浏览器获得请求对应的IP地址.D

关于IIS服务器下载新文件类型提示找不到文件的问题

在IIS6中新增可下载文件类型 IIS 6.0 不能处理未知的 MIME 类型 IIS6 只为对具有已知文件扩展名的文件的请求提供服务.如果请求内容的文件扩展名未映射到已知的扩展,则服务器拒绝请求.即IIS不支持未知文件扩展下载! 当您从 IIS 6.0 Web 服务器中请求文件时,而该文件的扩展名不是 Web 服务器上已定义的 MIME 类型,您将看到以下错误消息: HTTP 错误 404 - 找不到文件或目录. 原因 IIS 早期版本包含通配符 MIME 映射,允许 IIS 处理任何文件而无

Android 学习笔记之Volley(六)实现获取服务器的字符串响应...

学习内容: 1.使用StringRequest实现获取服务器的字符串响应...   前几篇一直都在对服务——响应过程的源码进行分析,解析了整个过程,那么Volley中到底实现了哪些请求才是我们在开发中需要进行使用的...Volley实现的东西其实并不是很多,它的主要功能是实现异步进行网络请求和图片加载,其实就是异步加载解析Json数据,异步获取服务器的字符串数据,异步实现网络图片的动态加载,还有一个请求就是清空缓存的请求,不过使用的地方不是很多,主要还是前面三个方面,因此Volley相对于And

【04】AJAX接收服务器返回的数据

AJAX接收服务器返回的数据 readyState 和 status 属性 readyState 属性保存有 XMLHttpRequest 对象的交互状态,从 0 到 4 变化: 0 :未初始化(还没有调用send()方法): 1:载入(已调用send()方法,正在发送请求): 2:载入完成(send()方法执行完成,已经接收到全部响应数据): 3:交互(正在解析响应数据): 4:完成(响应数据解析完成,可以在客户端调用了). status 属性保存有 XMLHttpRequest 对象与后台交

浏览器接收的常用 content-type

<1> 常见的设置方法 response.setHeader("content-type", 'text/html'); <2> 浏览器接收的常用 content-type 的类型及含义 <script type="text/javascript"> /* * <1> application/octet-stream 二进制流 * * <2> application/pdf 格式文件 * * <3&g