1.URL组件:
方案 用户 密码 主机 端口 路径 参数 查询 片段
方案:用什么协议 例如HTTP
路径:说明了资源在服务器的什么位置
主机端口:标识了是哪台机子装在了资源 指定位置
参数:以;来分隔。确定更多信息 例如FTP有两种传输模式:二进制和文本形式。指定参数就可以不确保混乱
查询字符串 :?tiem=12731 这种 连同URL路径组件一起发送给网关资源 用&连接 例如http://www.xiaonuo.cn?name=sgw&age=20
用户名和密码:
ftp://ftp.prep.ai,nit.edu/pub/gnu 没有账号密码 会直接插入anonymous(匿名用户)作为用户名 并发送默认密码
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu 指定了用户名 用@和其他部分隔绝
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu 第三个指定了用户名和密码 两个直接用:分隔
片段:URL可能指向整个文档理想状况下指向某个章节 例如:http://www.joes-hardware.com/tools.html#drills
2.相对URL转换
使用相对URL时候可以用基础URL进行相对URL和绝对URL之间进行转换
基础URL可能来自的地方
1.在资源中显示提供,例如HTML文档中可能包含定义URL的HTM标记<BASE> 通过他进行转换
2.封装资源的基础URL 如果一个没有显式的URL资源中发现一个相对的URL,可以将它所属资源的URL作为基础例如一个网页路径是 http://www.joes-hardware.com/tools.html 他里面有./hammers 那可以将前者的路径作为基础资源
3.没有基础URL 在某些情况下没有基础URL。通常意味有一个绝对URL,但有时候可能只是一个损坏不完整的URL。
3.URL编码安全
URL编码安全 最好的做法是把所有不安全或者受限的字符都进行转换 只要全部转换了就不用担心程序会被字符的仍和特殊含义迷惑了,最适合判断是否需要对字符进行编码的程序就是从用户处获取源端应用程序。因为每一个组件都有自己的安全/不去安全字符,与方案有关。