URL转码

作者: zjlearn | 来源:发表于2016-07-05 14:34 被阅读118次

对于URL转码问题的理解:
URL转码分为编码和解码两个过程。

URL编码的理解:

首先:我们需要想想URL作为一个请求,需要描述那几个部分:

  • 服务器的地址

  • 资源地址

  • 请求的参数
    这个和到某地找东西是非常类似的。

    举例:
    假设在远端的服务器的ip地址为123.231.45.3.端口号为8080.然后在文件/red+/blue/下有N个文件, 你想查询符合某个条件q的
    那么URL 就应该像下面这样:
    http://123.231.45.3:8080/red+/blue/?q=query
    格式为:协议+ip地址+端口号+文件+ 查询条件
    至于为什么是这种格式,这个是由之前的专家协商的, 这样大家在开发程序就有了一个统一的约定。
    (具体的例子可以看看参考文献中的一个表格)

其次,我们看看URL中用于分割各个部分的分割符。
Scheme://host address:port/file;path parameters?queur paprameter
其中/后面是path
;后面是路径参数
? 后面是查询条件
有了上面的约定 ,在服务器端收到URL之后,根据相应的特殊字符进行分割就可以得到Path路径,Path参数, 和查询条件,正确解析之后就可以进行取数据返回用户了。

下面我们来考虑这样一个情况:假设一个图片的名字to_be_or_not_to_be?.jpg时,对其进行请求,会出现什么情况。
上面在路径部分出现了?所以服务器就会解析错误,因为前面我们说过服务器是按照“?”对URL划分出查询部分的。

第三:如何解决上面的问题呢?这就需要对在Path中(也就是to_be_or_not_to_be?.jpg)的?符号进行编码转化,将路径部分的?编码为其他的字符。
(编码)转化规则如下:(可以当做一个黑盒子)
(注:一般使用utf-8编码方式)
将特殊字符利用某编码方式进行编码,之后在前面加上%。

转化之后如下:to_be_or_not_to_be%3F.jpg
这样当转码之后的URL发送到服务器段时,就不会出现解析上的歧义了。

URL解码

URL解码就是URL编码相反的过程,将编码后的URL解码显示在浏览器的地址栏内,给用户看。

上面是最简单的例子解释URL转码存在的理由,至于其他的更深一步的理解可以参考下面的参考文献。不过一般不做开发,可以忽略,。

参考文献:

中文版: http://www.oschina.net/translate/what-every-web-developer-must-know-about-url-encoding#Thereservedcharactersaredifferentforeachpart

英文版:https://www.talisman.org/~erlkonig/misc/lunatech%5Ewhat-every-webdev-must-know-about-url-encoding/

相关文章

  • iOS16图片不加载问题

    项目中对url进行了拼接,然后使用上述方法对url转码,导致url为空建议,仅对需要转码的部分转码ps:使用七牛云...

  • URL转码

    对于URL转码问题的理解:URL转码分为编码和解码两个过程。 URL编码的理解: 首先:我们需要想想URL作为一个...

  • 中文url转码问题

    解决中文url转码问题

  • url转码

    一般情况下针对于URL转码: [url stringByAddingPercentEscapesUsingEnco...

  • 防止已经转码的中文地址二次转码

    在公司项目中,视频播放的时候,url可能已经utf-8转码了,也可能未转码而包含中文,对url中的中文进行转码时,...

  • iOS 只对URL中的中文进行转码

    在公司项目中,视频播放的时候,url可能已经utf-8转码了,也可能未转码而包含中文,对url中的中文进行转码时,...

  • 网页地址带有中文导致分享解析无效

    // 对url中的中文进行转码(如果已知url中的中文没有进行utf-8转码) 如果知道url中的中文既可能已经转...

  • 标准库 net/url 翻译

    package url import "net/url" url 包解析了 URL 并实现了查询的转码,参见 RF...

  • url中文转码

    javascript的encodeURI(str)方法默认是UTF-8格式编码; 服务器接收到参数会自动进行一次解...

  • URL字符转码

    1:使用stringByAddingPercentEscapesUsingEncoding: 1.例子: 2.方法...

网友评论

      本文标题:URL转码

      本文链接:https://www.haomeiwen.com/subject/epvhjttx.html