接口相关

1、接口验证之解决ajax跨域:

1>通过php配置。。。略

2>通过服务器Nginx配置文件添加请求头的方式:

单个域名的不说了,就直接origin后添加指定域名就行了。

多个域名需要通过$http_origin系统变量获取请求源域名,并设置允许跨域访问

add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

注:如果ajax端请求的时候要求了Credentials include,那么Credentials必须设置为true,且此时Origin不能为'*'(w3c要求的)。此时用$http_origin来允许域名跨域访问,若需要访问限制,则在php中添加(ip等)。

还有两种Nginx里配置多域名跨域的方法没成功,就是使用map映射添加 或者 用正则判断请求源域名是否为允许的并添加到数组一起设置到origin的方法,后期再要试一下

2、接口验证之接口安全:

1> 前后端约定secret;

前端将请求参数+时间戳序列化

把约定好的secret加载序列化参数后的字符串前面(或者规则自定就好)并进行md5加密,等到sign

把sign和时间戳也加为参数去请求接口

后端收到请求后,先看下有没有sign和时间戳内容,没有直接返回错误

有的话将参数+约定好的secret按照与前端相同的格式md5加密后得到后端验证的sign

如果与前端传过来的相同,则接口验证成功。

2>由于js代码对用户透明,则无法保存secret,那么可以与后端协商一个根据接口动态生成secret的方式来避免展示secret。

3>防刷:接口请求的ip限制,频次限制(每秒10次等)。 等待补充。

原文地址:https://www.cnblogs.com/GetLastError/p/8491207.html