问题:php的解码方式是urldecode,前端的编码方式有escape,encodeURI,encodeURIComponent这三种,escape出来的url,php可以正常解析出来,但是escape不支持ES6,其他两种方式php不能解析正确
解决方法一,根据情况转:
URI部分用encodeURI,参数部分用encodeURIComponent,这样才是相对完美的编码方式。
比如`https://example.com/?next=abc...`,得到的结果分别是:
encodeURI(`https://example.com/?next=abc...`):
"https://example.com/?next=abc.com/def&encoding=utf-8"
encodeURIComponent(`https://example.com/?next=abc...`):
"https%3A%2F%2Fexample.com%2F%3Fnext%3Dabc.com%2Fdef%26encoding%3Dutf-8"
encodeURI(https://example.com/?next=${encodeURIComponent('abc.com/def')}&encoding=${encodeURIComponent('utf-8')}):
"https://example.com/?next=abc.com%252Fdef&encoding=utf-8"
解决方法二,base64:
json_encode()用eval()还原
base64_decode()用base64_encode()还原
解决方法三,最简单的方法,前后端都不使用转义!
评论