【问题标题】:Hide URL path from address bar and access it from site only从地址栏中隐藏 URL 路径并仅从站点访问它
【发布时间】:2021-10-25 23:15:21
【问题描述】:

我想限制访问者使用 URL 访问我网站的子页面。他们只能通过点击链接访问网站的子页面。

假设,访问用户个人资料页面的链接是

www.example.com/user/2/profile

还有一个带有此链接的按钮,用于访问用户个人资料页面。

因此,当用户单击按钮时,它将被重定向到该 URL,但如果有人直接访问该 URL,它将显示错误或重定向到主页。

或者,URL 会像这样隐藏

www.example.com/#

一句话,没有人通过直接点击URL而不是索引页面来访问网页。

有可能吗?

我的网站在 Laravel 上。

【问题讨论】:

  • “有可能做到吗?” - 不在这个级别,不。您需要为此使用 session 。在那里您可以记录用户是否访问了特定页面,然后您可以根据此决定是允许还是拒绝访问另一个页面。

标签: laravel .htaccess url redirect


【解决方案1】:

要使其只能从您的站点访问,您可以检查Referer HTTP 请求标头。这在直接请求时为空,否则设置为 引用 URL(即链接被单击的页面)。

但是,这是不可靠的。用户可以将他们的浏览器配置为不发送Referer 标头(因此这些用户将被阻止)。搜索引擎机器人不会发送 Referer 标头(如果这是一个问题)。对于一个淘气的用户来说,伪造Referer 以获得访问权限是微不足道的。

例如,在根 .htaccess 文件的顶部(在 Laravel 指令之前),您可以执行以下操作:

RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/
RewriteRule ^user/2/profile$ - [F]

如果Referer HTTP 请求标头未以https://www.example.com/ 开头(包括http 和非www),上述内容将为/user/2/profile 的任何请求提供403 Forbidden。

因此,当用户单击按钮时,它将被重定向到该 URL

澄清一下,用户点击的链接必须是“普通”链接,它会导致浏览器对新 URL 发出另一个 HTTP 请求,否则不会生成 Referer

从地址栏中隐藏 URL 路径

你不能真正做到这一点。

【讨论】:

    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2016-10-23
    • 2013-01-20
    相关资源
    最近更新 更多