今天遇到一个需求:前端发送get请求,参数中带有url地址,后台接收地址,然后通过这个地址发送http请求。

但是每次请求发送之后链接都会被重置,原本想是参数中有特殊字符,用urlencode一下应该没问题了,然而结果还是链接被重置。

解决办法:

1. 参数用base64编码加密。

base64编码和md5一样可以对字符串进行处理。然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。而且如果参数太长的话,超出浏览器限定长度url会被截断。所以加密的话还需要的是改进版的base64。

2. 用post请求提交

试了一下用post请求,完全没有问题,而且不用担心参数的长度。

看了一下百度有些链接也是带了url的,但是也是经过加密了,但是肯定不是base64,只是对里面的特殊字符进行了转码,可能用的自己的一套规则。