• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

为什么要用urlencode?

php 搞代码 3年前 (2022-01-25) 17次浏览 已收录 0个评论
文章目录[隐藏]

你们是在什么场景下用的,还有直接base6和他有啥区别,也都可以实现想要的结果吧?

回复内容:

你们是在什么场景下用的,还有直接base6和他有啥区别,也都可以实现想要的结果吧?

有時候urlencode用在回調地址那裡.
例如一個接口,你傳送過去時,需要帶上你這邊的回調地址,也是個url. 這樣你不能url+url傳送,需要一個urlencode把回調地址編碼,防止發生問題.
例如:微信的一個接口

<code>https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect</code>

REDIRECT_URI 這裡應該填你的服務器回調地址.正常寫法如 http://api.baidu.com/callback.php

那麼生成的接口就是

<code>https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http://api.baidu.com/callback.php&response_type=code&scope=SCOPE&state=STATE#wechat_redirect</code>

這樣訪問肯定出問題…
那麼http://api.baidu.com/callback.php 這個回調地址,就要urlencode后再放到地址中發送.

<code>https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2Fapi.baidu.com%2Fcallback.php&response_type=code&scope=SCOPE&state=STATE#wechat_redirect</code>

這樣傳就沒問題了!

因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 url 中不能包含 @ 字符。

常用的场景我用过的:

假设你的网站希望采用rest风格的路由来做搜索引擎优化:

<code>http://www.somesite.com/tag/:name</code>

上面的业务是根据某个tag名称,来呈现本文来源gaodai$ma#com搞$$代**码)网8搞代gaodaima码对应的页面,但是url中是不允许有中文出现的,所以如果我的
name是:

<code>http://www.somesite.com/tag/美女与野兽</code>

那么我需要urlencode一下。

PS:现代浏览器几乎都支持中文直接显示,那是因为浏览器帮你做了encode的事情,但是老版本的IE,例如IE6等不会,例如你可以在chrome中直接输入中文url,但是你不能通过命令执行

<code>curl some_url_contain_中文</code>

你可以看看segmentfault的tag系统,你查看源码,看下中文tag的url。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:为什么要用urlencode?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址