js前端和php后端对url编解码处理方式不一致的问题

php的解码方式是urldecode,前端的编码方式有escape,encodeURI,encodeURIComponent这三种,escape出来的url,php可以正常解析出来,但是escape不支持ES6,其他两种方式php不能解析正确,有什么好的解决方案?

阅读 4.7k
4 个回答

“值”,使用 encodeURIComponent

另外,这各问题把“不能解析”的例子给出来。

新手上路,请多包涵
  • 号不能正常转义

你统一用一种方式啊,然后php方面针对这种方式调试来能处理好啊。
这类问题你最好有详细的例子,包括
编码前数据,编码处理相关语句,编码后数据,php端接收到的数据,php解码语句,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"

懒得改了,最后的 ` 自己脑补吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题