如题,在url中,是search在前面还是hash在前面?
我看网上很多解释URL格式是这样的,也就是search在前http://domain.com/?search=a#hash
但是在angular中,确实hash在前?
那么我想问一下,到底是hash在前还是search在前?
在URL里面,当然是search
在前,hash
在后。
只是在location
对象中,hash
属性在search
属性前面。
http://domain.com/?search=a#hash
最后,'?search=a' 整个地是location.search
,'#hash'整个地才是location.hash
对Angular.js了解不多,没太搞懂hash怎么在search前了……关于URI的格式是由RFC 3986规定的。
其中?search=a
这种叫query
,#hash
叫fragment
。
* query
的规定是以第一个?
开始,至行尾或#
结束。
* fragment
以#
为开始,行尾为结束。
也就是说query
必须在fragment
之前。
另外根据query
和fragment
字符限定的规定,两者中都可以含有/
和?
,但不可以含有#
。(还有其它的限制,这里是简要的说法,因为我们此处要讨论以?
和#
开头的字串)所以Angular.js中出现的http://example.com/#/some/path?search=a#hash
实际上是不符合RFC规定的。但是此处是为了给不支持HTML5的浏览器提供兼容支持,也是无奈之举。
这个在前后有什么关系吗??难道url中的参数还会影响取值?
hash
的部分是不会传到服务器的,即正常请求的话,#
后面的部分服务器是接收不到的
当然js
检测hash
然后发起不同的请求另说.
这个不存在什么规范的问题吧,看自身怎么架构的吧