项目中使用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 "
";
print_r($this->_get('b'));
echo "
";
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头
什么是简单请求? 查看
什么是非简单请求?查看