facebook如何重写浏览器地址栏中页面的源URL?

     2023-03-05     62

关键词:

【中文标题】facebook如何重写浏览器地址栏中页面的源URL?【英文标题】:How does facebook rewrite the source URL of a page in the browser address bar? 【发布时间】:2011-04-20 11:16:14 【问题描述】:

转到http://www.facebook.com/facebook?v=wall,然后单击信息选项卡。内容将被加载,地址栏现在变为http://www.facebook.com/facebook?v=info,但网页没有重新加载。

一开始我以为是Ajax,但我的问题是,如何在不重新加载的情况下更改地址栏?我知道我可以使用 JS 更改锚点(#wall)但查询字符串(?v=wall),如何?

【问题讨论】:

我看到很多投票和喜爱,但有人回答吗? 在浏览器标签中也有加载指示器。 @Snoob:给它一些时间,来吧。人们投票是因为他们也想知道答案…… 在 Flickr 中也可以看到类似的行为。在 Flickr 中打开任何照片,您会在右侧看到照片集。单击照片集名称,地址栏值将更改,无需重新加载页面。 为你编辑了一个更好的英语...如果有错误我没看到请告诉我:) 【参考方案1】:

我没有 Facebook,所以无法查看。但我有 95% 的把握它必须是一个完整的页面请求,地址栏是不可写的,因为这对于网络钓鱼网站来说是一个非常有用的功能(而不是 http://fakeonlinebank.com 它重写为 http://yourtrustybank)。它可能太快了,以至于您的浏览器似乎只加载了那部分?

但我很想知道是否有人会纠正我,因为这意味着他们有你想听到的答案;)

【讨论】:

谢谢,我尝试使用 Firebug 更改一些 facebook,然后单击信息选项卡,我仍然“活着” -> 这不是整页请求 他们是否可以使用客户端存储来加快速度? 您使用哪种浏览器,在我的 Firefox (Mac) 中,这是我最终得到的 URL facebook.com/facebook?v=wall#!/facebook?v=info,绝对是历史哈希技术。【参考方案2】:

@Snoob - 如果您接受@bobince's answer,我将不胜感激,他首先在这里的具体细节是正确的。由于在它未被接受之前我无法删除/删除它,因此我将对其进行更新以使其尽可能正确。


目前这是您正在看到(或者更确切地说,没有看到)的 WebKit(Chrome、Safari 等)特定的东西,如 @bobince指出在 other 浏览器中,您可以在栏中看到 real URL:

http://www.facebook.com/facebook?v=wall#!/facebook?v=info\

Chrome 刚刚显示的地方:

http://www.facebook.com/facebook?v=info

这有点道理,given this is how you make AJAX Content crawlable with the Google search engine,所以他们的浏览器也能识别出内容的来源。

对细节的更正: Webkit 浏览器使用 HTML 5 历史功能 you can see the code here(查看 HistoryManager)显示 Facebook 想要的缩短 URL,在这种情况下,它们是使用.replaceState() 将您访问的网址替换为可用的直接网址。

注意:这个答案以后可能无效(WebKit 特定位),因为其他浏览器越来越多地支持 HTML5 功能,这可能很快就会过时。

【讨论】:

很棒的发现尼克。附带说明一下,它可能是 WebKit 特定的东西,因为它在 Safari 中的工作方式相同。 @anddoutoi - 我没有要测试的 Safari :) 我会更新以包括这个......并且请注意,随着其他人越来越多地支持 HTML5 位,这个答案可能很快就会过时。 有趣的是,在 Webkit 浏览器中查看新的 Twitter 设计遵循我们在 Facebook 上看到的相同模式,即我仍然看到 /#!在 Twitter URL 中,但不在 Facebook URL 中。 #! 信息也很有用。我之前没有看到这被指定为标准的蜘蛛行为,希望其他引擎也能接受它。 @bobince - 还有其他搜索引擎吗??【参考方案3】:

它使用 HTML5 的新 history.pushState() 功能来允许页面伪装成与最初获取它的 URL 不同的 URL。

目前这似乎只有 WebKit 支持,这就是为什么我们其他人看到的是 ?v=wall#!/facebook?v=info 而不是 ?v=info

该功能允许在支持 JS 和不支持 JS 的用户代理之间正确地为动态加载的页面添加书签、交换等。因为如果您作为 JS 用户将某人链接到 ?v=wall#!/facebook?v=info 并且他们的浏览器不支持 JS 和 XMLHttpRequest,那么该页面将不适用于他们。 #! 也用作提示搜索引擎下载非 AJAX 版本。

【讨论】:

【参考方案4】:

对于 MooTools 开发人员,我建议查看 cpojer 的 mootools-history 插件,该插件在可用时提供对本机历史 API 的支持,并回退到哈希。

【讨论】:

rewrite功能

...,rewrite地址重写与地址转发  区别:1,地址转发后客户端浏览器地址栏中的地址时不会改变的;而地址重写的话客户端浏览器地址栏会改变为服务器确定的地址     2,在一次地址转发过程中,只产生一次网络请求;而一次地址... 查看详情

Facebook 如何在加载不同页面时保持页眉和页脚固定?

】Facebook如何在加载不同页面时保持页眉和页脚固定?【英文标题】:HowdoesFacebookkeeptheheaderandfooterfixedwhileloadingadifferentpage?【发布时间】:2010-10-1416:23:26【问题描述】:浏览Facebook页面时,页眉和固定页脚部分在页面加载之间保... 查看详情

明显重写的 URL 重写(更改地址栏中的 URL)

】明显重写的URL重写(更改地址栏中的URL)【英文标题】:URLrewritingthatvisiblyrewrites(changestheURLintheaddressbar)【发布时间】:2011-01-0612:01:44【问题描述】:我之前问过这个问题的补充:Mod_rewriteinvisibly:workswhentargetisafile,notwhenit\'sadirec... 查看详情

如何在每个页面的地址栏中保持相同的 url?

】如何在每个页面的地址栏中保持相同的url?【英文标题】:HowcanIkeepthesameurlintheaddressbarforeverypage?【发布时间】:2011-10-2815:42:08【问题描述】:我有一个使用Codeigniter构建的网站,其中有很多页面和目录。假设站点名称是www.examp... 查看详情

如何使用ie浏览网站?

参考技术A启动IE,查看,工具栏,地址栏。浏览器窗口各部分功能如下。地址栏:用于输入网站的地址,IE浏览器通过识别地址栏中的信息,正确连接用户要访问的内容。如要登录“网址之家”网,只需在地址栏中输入网址之家... 查看详情

勇敢的浏览器如何关闭地址栏中的自动提示

】勇敢的浏览器如何关闭地址栏中的自动提示【英文标题】:BravebrowserhowtoturnoffautosuggestinAddressbar【发布时间】:2020-03-0413:59:11【问题描述】:当我输入网址时,Brave会建议非常愚蠢的网站。示例:当我只输入“mu”时,它建议使... 查看详情

如何删除 URL 中的参数并将其显示在地址栏中而不会导致 Javascript 中的重定向?

】如何删除URL中的参数并将其显示在地址栏中而不会导致Javascript中的重定向?【英文标题】:HowtoremoveparametersinURLanddisplayitinaddressbarwithoutcausingredirectinJavascript?【发布时间】:2012-01-2014:20:58【问题描述】:我找到了很多关于如何... 查看详情

Facebook 如何在 AJAX 页面加载期间显示浏览器加载进度?

】Facebook如何在AJAX页面加载期间显示浏览器加载进度?【英文标题】:HowdoesFacebookshowbrowserloadingprogressduringAJAXPageLoads?【发布时间】:2012-02-1312:07:25【问题描述】:为了让IM客户端始终保持登录状态,Facebook通过使用AJAX在将其插入... 查看详情

从浏览器的地址栏中复制一个 UTF-8 URL,只给出丑陋的编码

】从浏览器的地址栏中复制一个UTF-8URL,只给出丑陋的编码【英文标题】:CopyingaUTF-8URLfrombrowser\'saddressbar,givesonlytheuglyencodedone【发布时间】:2013-08-1303:42:59【问题描述】:当我从浏览器的地址栏(几乎任何操作系统上的任何浏览... 查看详情

如何获取地址栏中的url

1.首先打开浏览器,在百度搜索中输入搜索关键字。(演示以搜索“百度一下”为例)2.在搜索页面的顶部就是对应的URL(也就是常说的网页网址)。3.选择地址栏的网址,然后右键鼠标选择【复制】,将网页的网址进行复制。4.... 查看详情

分享链接时找不到 Facebook 显示页面

】分享链接时找不到Facebook显示页面【英文标题】:Facebookshowingpagenotfoundwhensharinglink【发布时间】:2014-03-3110:14:57【问题描述】:我正在分享来自网站的内容,每次我将链接粘贴到Facebook时,它都会显示“找不到页面”。有时当... 查看详情

隐藏/禁用/任何其他阻止用户在浏览器地址栏中输入的方法

】隐藏/禁用/任何其他阻止用户在浏览器地址栏中输入的方法【英文标题】:Hide/Disable/Anyothermethodtopreventuserfromtypingintheaddressbarofthebrowser【发布时间】:2015-11-2509:38:29【问题描述】:我正在构建一个Cordova应用程序,它会在系统浏... 查看详情

如何使用 Branch.io 链接打开 Facebook 页面

...如果安装了应用程序,则打开应用程序,否则将重定向到浏览器中的facebook页面。我在电子邮件签名中使用此链接。目前,在android& 查看详情

如何在url地址栏中直接写数组参数进行传递

...sp;   今天博主遇到这样一个问题,就是如何在浏览器url地址栏中直接写入数组参数进行传递,问了身边几个同事,都没有找到成功的书写方法。就开始怀疑是否可以在地址栏中直接写入数组进行传递。开始在谷歌,百... 查看详情

运行 streamlit 时如何在地址栏中显示 URL?

...源上运行我的linux开发的streamlit应用程序,并使用我的PC浏览器导航到该应用程序。一切都 查看详情

vue2开发中如何去掉地址栏中的#号

...路径)按enter键开始启动node服务器运行成功,然后可以在浏览器中输入localhost:8080(端口号可以自己设置)访问。这是我们可以看到地址栏中有个#号,可是在实际访问地址的经验中真的没有见过带#号的;那么我们应该如何 查看详情

当用户返回表单以更正错误时,如何防止浏览器栏中的 URL 发生变化?

】当用户返回表单以更正错误时,如何防止浏览器栏中的URL发生变化?【英文标题】:HowdoIpreventURLinbrowserbarfromchangingwhenauserisreturnedtoaformtocorrecterrors?【发布时间】:2017-05-1700:16:35【问题描述】:我正在使用Rails5。我有一个页面... 查看详情

您无法直接访问此页面 - HybridAuth 社交登录

...上检查时,出现错误:您无法直接访问此页面我注意到当浏览器在地址栏中使用WWW时出现错误,同一台 查看详情