【问题标题】:Request.ServerVariables["HTTP_REFERER"].ToString() is not working in IE11Request.ServerVariables["HTTP_REFERER"].ToString() 在 IE11 中不起作用
【发布时间】:2021-10-21 15:45:36
【问题描述】:

我有一个内部链接到第三方网站的基本页面。在此第三方网页上单击按钮时,我的网页将在另一个选项卡中启动。

启动时,我会捕获前一个页面的 URL,以便我可以在前一个 URL 中获取特定的 ID。这在 IE8 到 IE10 上运行良好。
但是 IE 11 根本不会返回完整的 URL。有没有人知道的快速修复方法?

我已经尝试了以下所有方法,但没有任何乐趣,

Request.ServerVariables["HTTP_REFERER"].ToString()
ViewState["PreviousPageURL"] = Request.UrlReferrer;
Request.UrlReferrer.AbsoluteUri;
string urlName = Request.UrlReferrer.ToString();
System.IO.Path.GetFileName(Request.UrlReferrer.AbsolutePath);

提前感谢任何帮助。 非常感谢,

【问题讨论】:

    标签: c# asp.net internet-explorer-11


    【解决方案1】:

    不要相信客户端 - 你不应该依赖 Referer 标头正在发送或是否正确。

    特别是,Google 搜索使用 JavaScript 技巧来防止从搜索结果页面发送 Referer 标头 - 网站管理员无法再获取原始 Google 搜索页面地址(从查询字符串中提取搜索词) -表面上这是为了保护用户隐私。

    其他原因包括:

    • 用于禁用标题的用户自定义隐私设置
    • 禁用标头的第三方安全软件(如 Norton Internet Security)
    • 阻止标头的网络安全硬件,例如 HTTP 代理或公司防火墙
    • 浏览器扩展

    据我所知,IE11 不会改变 Referer-handling 的行为。

    在您提供的代码示例中,最后 4 个示例都使用 Request.Urlreferrer 所以当然它们都会返回相同的结果。

    【讨论】:

    • 感谢您的反馈,但有没有修复或有用的代码可以用来实现我需要的东西,谷歌搜索我找到了相同的答案,但没有解决方案或修复。
    【解决方案2】:

    根据我的经验,如果您在 iframe 中打开页面,则 ie 中的referer 字段不会为空(至少在 ie11 中不会)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 2018-10-25
      • 2019-01-14
      相关资源
      最近更新 更多