Http协议 400错误码(最全分析 —— 解决)

1. http协议 400错误码

定义

HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。

原因及解决方案

原因:

1、前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;

2、前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;

解决方案:

1)对照字段名称,类型保证一致性;

2)使用stringify将前端传递的对象转化为字符串 ,data: JSON.stringify(param)。

扩展:

404:地址未找到

504:缓存未找到

200:成功返回码

2. 关于禁止ViewPager预加载问题,完美解决!

2. token:用户令牌,

公共参数:token(sessionid),接口的token是如何使用的(头部入参)

标识这个用户行为,校验是否在线,保证数据安全,用在金融行业,电商,股票交易,虚拟货币(区块链),

特点: 时间长短:有效期特点

项目中:在登录的时候获取新的token,退出的时候,清除保存的token值,

==使用:需要uid的接口,必须携带token值,sessionid==

注册的时候,提示400,为什么,因为:多了sessionid和userid,封装的时候

token实现单点登录 (就是登陆的唯一性:在登录的时候获取新的token,退出的时候,清除保存的token值,)

服务器返回的状态,状态码表,0:成功 -1 :token国旗 -2:什么找不到 -3:网页未找到

最简单的方式:接口加密机制使用https

3.Https安全机制:

问题 :

1. 数据明文,有可能被窃取,

2. 数据完整性无法保证,有可能被篡改

3. 数据双方的身份无法保证

http协议:1.明文如何解决?

加密:加密算法:非对称,对称,散列hash算法,base64,http加密使用社么算法核实:双向加解密,对称和非对称——,一般选择非对称

2.身份认证:区别于token认证, 不要混淆 http是无法做到验证的

3.数据完整性校验 ?散列hash算法: 指纹(密文字符串)... 特征:确定文件的独立性和完整性 app打包的时候 keystore.jks(签名文件) 组长和组员的签名文件不是不是同一个文件,判断他的数据是不是一致 比如一张图片 ,拷贝一份不算一份文件...

(每一个文件独有自己的hash值, md5值)

企业中如何实战:强制进行排序 通过对首字母的排序

我们首先对请求参数的首字母与进行排序,如果首字母相同,逐次对比,直到排序成功,通过对比sign值来校验文件的完整性,获得singne码与前面的singe值进行比较,来校验数据的完整性

sign=md5(mobile=186&pwd=32323),入参:base64(rsa(mobile=186&pwd=123232&sign=xxxxxxxxxx)),服务器如何揭秘并验证呢?

服务器最终得到所有参数除了sign值,通过同样的md5算法,sign2 = md5(mobile=3232&pwd=32323),去除客户端传过来的sign,开始sign2.equals(sign),如果相等,证明没有被篡改过

4.抓包工具Charles的使用教程

image

我常借用Charles做这些事情 :

  • 抓取 Http 和 Https 的请求和响应,抓包是最常用的了。
  • 重发网络请求,方便后端调试,复杂和特殊情况下的一件重发还是非常爽的(捕获的记录,直接repeat就可以了,如果想修改还可以修改)。
  • 修改网络请求参数(客户端向服务器发送的时候,可以修改后再转发出去)。
  • 网络请求的截获和动态修改。
  • 支持模拟慢速网络,主要是模仿手机上的2G/3G/4G的访问流程。
  • 支持本地映射和远程映射,比如你可以把线上资源映射到本地某个文件夹下,这样可以方面的处理一些特殊情况下的bug和线上调试(网络的css,js等资源用的是本地代码,这些你可以本地随便修改,数据之类的都是线上的环境,方面在线调试);
  • 可以抓手机端访问的资源(如果是配置HOST的环境,手机可以借用host配置进入测试环境)
    charles相当于一个插在服务器和客户端之间的“过滤器”;

当客户端向服务器发起请求的时候,先到charles进行过滤,然后charles在把最终的数据发送给服务器;

注意:

此时charles发给服务器的数据,不一定是客户端请求的数据;charles在接到客户端的请求时可以自由的修改数据,甚至可以直接Block客户端发的请求;

服务器接收请求后的返回数据,也会先到charles,经过charles过滤后再发给客户端;

同理:客户端接收的数据,不一定就是服务器返回的数据,而是charles给的数据;

正因为上面的原理,所以charles能实现的功能,对前端开发者来说非常有吸引力,相当于请求和响应都可控的,而且charles为了控制更加方面,提供很多简洁的操作;

Charles手机抓包工具使用实践

你可能感兴趣的:(Http协议 400错误码(最全分析 —— 解决))