Heim > Backend-Entwicklung > PHP-Tutorial > 为什么要用urlencode?

为什么要用urlencode?

WBOY
Freigeben: 2016-06-06 20:31:38
Original
1476 Leute haben es durchsucht

你们是在什么场景下用的,还有直接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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

這樣訪問肯定出問題...
那麼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>
Nach dem Login kopieren

這樣傳就沒問題了!

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

常用的场景我用过的:

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

<code>http://www.somesite.com/tag/:name
</code>
Nach dem Login kopieren

上面的业务是根据某个tag名称,来呈现对应的页面,但是url中是不允许有中文出现的,所以如果我的
name是:

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

那么我需要urlencode一下。

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

<code>curl some_url_contain_中文
</code>
Nach dem Login kopieren

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

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage