作者回复: 回答正确,但关于字段和query参数的区别可以再多说一些。
作者回复: thanks。
作者回复: 如果网站使用了cdn就会解析到cdn,否则就是网站自己的服务器。
判断远近很复杂,也是cdn的核心技术之一,术语叫GSLB。简单来说,就是看ip地址,然后有一个对照表,就知道在哪里了。
作者回复: dns只解析ip地址,端口号是浏览器添加的。
如果不提供端口号,浏览器就会添加默认端口号,比如80/443。
作者回复: 为了方便用户使用,浏览器会有一些容错处理,可以输入不同太规范的uri,但我们自己写程序还是要尽量按照标准来。
作者回复: 地址栏里的query参数是uri的一部分,当然是在请求头里。
作者回复: 总结的非常好,赞!
作者回复: 统一资源名称(英语:Uniform Resource Name,缩写:URN),已经基本不使用了,所以URI现在差不多可以认为就是URL。
作者回复: 笔误,写错了,非常抱歉,我尽快改过来。
作者回复: 感谢补充。
作者回复: 有的uri会对uri解码,显示正常的文字,但有的uri太长太怪,可能就不显示正常文字了。
但本质上uri里的非ascii码都是被编码的,这是rfc规定的。
作者回复: 继续努力,前进3。
作者回复: 说的很好。
我在之前的答复里好像也说过,头字段针对的是本次请求,而query参数针对的是uri表示的资源,两者的作用域和时效性是不一样的。
作者回复: 回答正确。
不过第二个问题怪我没说清楚,实际上想问的是这两者形式很相近,应该在什么场景下使用查询参数或者头字段。
作者回复: uri与http同时发明的,里的协议名可以扩展,比如后来就添加了WebSocket。
作者回复: 加user和password的uri可以用,但不推荐,非常不安全,所以我就不过多介绍了,避免“误入歧途”。
作者回复: 大体正确。
URI 的查询参数描述的是资源的属性,字段描述的是本次请求的属性,区别比较细微。
作者回复: 按照rfc3986,#fragment必须在qurey后面,你的这种情况可能是实现做了特殊的兼容处理,个人建议还是最好按标准来。