项目中使用base64生成生成的秘钥以及部分信息需要加密传输。
传输过程中,有一点点的注意事项:
这里jquery设置header头
beforeSend:function(xhr){ xhr.setRequestHeader('Access-Token', yao); xhr.setRequestHeader('Access-Token2', yao); xhr.setRequestHeader('Access-Token3', yao); xhr.setRequestHeader('Access-Token4', yao); xhr.setRequestHeader('Access-Token5', yao); },
这个样子设置
先看一段js代码:
var yao='qasiqPxTTsOherWq6txEhAfchTTUvsAzibNkBdzjlDcUSYoADHzyuysdwEnAvmS3OSjZwHQ5fmsSj+1r5RT54KRQr9mK9wK46VEX3cDkJT63uGgWwe29j6p1zyM6DgqIrGfRc2n8d1kGFZMRcB6SFp85vT0pVb1nVRijlPqrKIfi25P/pkSnS5jELi+xEU/+TyCFUssaeA4huOeFTwws8y9sWE3cQ0ua7Ze3Lx2fJUw='; ajax({ url: '/money/t?b='+yao, type: 'post', data: { pass: yao }, beforeSend:function(xhr){ xhr.setRequestHeader('Access-Token', yao); xhr.setRequestHeader('Access-Token2', yao); xhr.setRequestHeader('Access-Token3', yao); xhr.setRequestHeader('Access-Token4', yao); xhr.setRequestHeader('Access-Token5', yao); }, needLoading: false, success: function(data) { checkJson(data, function() { console.log(data); }) } });
大概意思:ajax 以post 方式提交一个请求到服务器
get
post
header
以上三项均设置了 yao 这个字符串
字符串中 包含了 + 等部分字符,我们看一下服务器是否可以接收到指定的字符:
这是php服务器代码:
//header("Access-Control-Allow-Headers: Access-Token"); /*$data=['title'=>'123']; $this->smarty->view('money/recharge', $data);*/ print_r($this->_post('pass')); echo "<br>"; print_r($this->_get('b')); echo "<br>"; var_dump($_SERVER['HTTP_ACCESS_TOKEN']); var_dump($_SERVER['HTTP_ACCESS_TOKEN1']); var_dump($_SERVER['HTTP_ACCESS_TOKEN2']); var_dump($_SERVER['HTTP_ACCESS_TOKEN3']); var_dump($_SERVER['HTTP_ACCESS_TOKEN4']);
输出结果:
我们看到get 请求的 + 号被空格替代了
定义header头规则:
1、数字、字母、中横线 数字可以开头
2、不支持下划线、特殊字符
传递 在服务器端 采用( 接收数据)
User-Token HTTP_USER_TOKEN
age HTTP_AGE
3school HTTP_3SCHOOL
USER-TOKEN HTTP_USER_TOKEN
规则如上所示。
不管客户端怎么传递,最后转换成 大写字母 且有 中横线 的转换成 下划线
不符合传递规则,服务器端接收不到数据。
意外收获:
同源接口请求,ajax中传递header头,服务器或程序不需要设置 header头
什么是同源? 同源策略、跨域解决方案
什么是简单请求? 查看
什么是非简单请求?查看