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