AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1458576
Accepted
Alexei
Alexei
Asked: 2019-07-12 00:31:52 +0800 CST2019-07-12 00:31:52 +0800 CST 2019-07-12 00:31:52 +0800 CST

为什么允许代理/浏览器更改 URL 而无需实际导航到该路径?

  • 772

这个问题涉及在不实际导航到该 URL 的情况下更改浏览器中的 URL。我也偶然发现了几个使用它的网站,我发现它对用户造成混淆/误导,我想知道为什么首先允许这样做。

问题:为什么允许代理/浏览器更改 URL 而无需实际导航到该路径?允许这样做的好处是什么,而缺点是让用户感到困惑。

javascript url
  • 1 1 个回答
  • 52 Views

1 个回答

  • Voted
  1. Best Answer
    user1686
    2019-07-12T01:30:34+08:002019-07-12T01:30:34+08:00

    长期以来,网络应用程序仅使用 JavaScript 就能够完全改变页面的内容。例如,在 Twitter 中,您可以完全在客户端从主时间轴导航到配置文件再到特定推文,无需重新加载任何页面——仅基于 JavaScript 的更新。

    这样做的问题是,您无法复制、添加书签或共享您看似所在的 URL。如果您从 开始https://twitter.com并打开例如推文或个人资料页面,您的地址栏仍然认为您在https://twitter.com。你也不能真的点击“后退”按钮——你会离开整个应用程序。

    许多网站试图通过仅更改#hashURL 的一部分(用于内部页面链接)来解决此问题,通常以使其看起来类似于真实路径的方式 - 例如单击@stackoverflow 将其更改为https://twitter.com/#!/stackoverflow.

    现在该 URL 是可复制和可收藏的,但仍然存在问题——它只能被客户端 JS 理解,而不被禁用/阻止 JS 的搜索引擎或浏览器甚至 wget/curl 等 HTTP 工具理解。对于所有这些工具和程序,# 之后的部分是没有意义的(因为它指向动态 JS 生成的数据,而不是 real name= 或 id=)。

    这就是为什么添加 API 以通过 JS 生成“真实”历史事件的原因——它允许每个基于 JS 的页面都有一个 URL 与真实的基于服务器的页面完全对应。当您单击个人资料链接时,JS 会生成您在没有 JS 时获得的相同页面(只是速度更快),因此它也具有相同的 URL。

    如果你使用这个 API,你当然应该只生成实际存在于服务器上并对应于真实 URL 的路径——就像在上面的例子中,当 JavaScript 将 URL 更改为 时https://twitter.com/stackoverflow,这很好,因为这是一个真实的页面以后可以访问,内容相同。只是碰巧页面是通过 JS 而不是通过导航加载的,但这种差异应该是几乎看不见的。

    因此,只有当 API 被滥用时, “缺点是让用户感到困惑”才是正确的,例如生成服务器稍后无法识别的 URL。

    • 2

相关问题

  • uglifyjs - 使用任何选项运行时挂起

  • VSCode JSDoc 类型检查

  • Javascript 日期评估格式

  • 如何从 Facebook 群组下载文件?[关闭]

  • 在 Sublime 文本编辑器中跳转到 ES6 箭头函数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve