浏览器会自动删除URL中的#吗?

S O*_*S O 3 url hash

我们的前端人员需要形成一个包含哈希值的网址(即http:// blah /#some-link.)当我们在浏览器上点击这个并使用fiddler检查http流量时,我们看到了所有内容之后的等等/被删除,所以请求实际上只是http:// blah /.我们还在我们的服务器eclipse调试日志中确认了这一点.

Spring安全性将请求重定向到正确的登录页面(因为用户尚未登录),但浏览器上的url现在显示: http:// blah/some-link (散列被删除)但是url on浏览器应该是http:// blah/log-in.

知道为什么会这样吗?任何修复或解决方法?提前致谢.

rec*_*ive 5

#根据 HTTP 规范,之后的内容仅在客户端使用。如果您在服务器上需要该信息,您可以使用不同的分隔符,或者您可以在页面加载后通过在客户端使用 javascript 读取它通过 ajax 提交它。


Ole*_*eev 5

后面的URI部分#称为fragment:

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

Scheme和hier-part标识文档的位置,片段帮助浏览器识别该文档中的位置.

片段在作为请求的一部分发送之前由客户端软件从URI中剥离.

来自RFC3986:

片段标识符不用于
URI 的特定于方案的处理; 相反,片段标识符
在解除引用之前与URI的其余部分分开,因此
片段本身内的识别信息
仅由用户代理解除引用,而不管URI方案如何.虽然
这种单独处理通常被认为是
信息丢失,特别是随着
资源随时间推移而对参考文献进行精确重定向,但它也有助于防止信息
提供者拒绝参考作者
有选择地引用资源内的信息.