1、405 Method Not Allowed
请求方式错误,比如服务端约定PUT请求,结果客户端采用了GET;
我的项目中是这样的,访问的服务真实存在,但是用PUT,POST访问的url是不存在的,所以出现这样的问题,就是访问的IP写成了别人的了。
2、415 Unsupported Media Type
请求的Content-Type 错误,对于GET请求没有限制,但是对于其他请求方式,尤其是POST,则必须使用 ContentType:"application/json" ; 另外 dataType 是服务端返回类型,最好不要指定。
这里还有一点需要注意,那就是服务端会采用 @RequestBody来获取参数,因为 RestController默认把 @RequestBody和@ResponseBody作为JSON处理,所以需要采用JSON格式接收
contentType:"application/json"
3、400 Bad Request
表示请求报文中存在语法错误
这个是和415有关联的,因为415必须指定请求给服务端的数据类型,如果指定了为"application/json" , 那么使用ajax发送数据是即data参数必须为json格式的字符串
JSON.stringify(obj) ; 不能使用$('form').serialize();原因就是这个方法内部使用了 $.param(obj)把参数转为 url的参数了,而且还进行了特殊字符转码,需要使用decodeURIComponent解码,jquery还把空格转为了+号
data:JSON.stringify(obj)
4、403 Forbidden
就我的工程中是因为,Controller里面新增了delete方法,但是没有重启就直接前台ajax 调用 delete,换句话说如果没有对应的方法就直接访问,就会出现这个 403,其实 404 与之不同的是估计就是请求方式的不同导致的,所以,只要重启项目就OK了。
5、413 Request Entity Too Large
Failed to load resource: the server responded with a status of 413 (Request Entity Too Large)
发送POST请求数据时,由于表单数据太大,导致发生了一个客户端错误,如果有web服务器,比如Nginx那么是可以调节上传的数据的大小来解决这个问题,或者是可以把请求的参数变小。
6、302 Found
应该是访问的URL地址和静态资源的文件夹路径冲突了,静态资源地址的文件夹也是。
临时性重定向,该状态码表示请求的资源已经被分配了新的URI,希望用户本次能使用新的URI访问。
7、401 Authentication is possible but has failed
表示发送的请求需要有通过HTTP验证的认证信息,这个就是在使用SVN时,在浏览器打开需要用户输入用户名和密码。
8、404 Not Found
表示资源不存在,很可能是客户端URL地址写错了
图例: