【问题标题】:c# get complete URL with "#" [duplicate]c#用“#”获取完整的URL [重复]
【发布时间】:2010-11-22 06:25:59
【问题描述】:

我在尝试获取 c# 页面的整个 URL 时遇到了一个小问题(?)。

url 包含“#”-link ref char。当我抓取 URL 时,我希望这样做

例如。 http://localhost/site/page.aspx?var=1&var=2#link

我尝试过 Request.URL、Request.Querystring 等,它只返回“#”-char。

有什么办法连最后一部分都抓起来吗?

提前致谢

【问题讨论】:

  • 为什么需要这样的功能?也许有另一种方法可以解决您的问题。
  • 这是因为页面的创建者使用查询字符串来传递密码,因此禁用了包含#的密码,愚蠢的,我知道
  • 您应该避免在查询字符串中传递密码,因为这样做可以让您在没有帖子的情况下从查询字符串登录。一些浏览器加载项(例如 Google 网络加速器)可能会认为它们是导航,而不是操作。作为一般规则,GET 应该只显示内容,任何改变数据或状态的东西都应该是 POST
  • 是“禁用包含#的密码”的问题吗?我相信你可以在密码中转义/编码像 # 这样的字符来解决这个问题。

标签: c# asp.net url


【解决方案1】:

您确定# 之后的内容没有发送到服务器吗?我很确定几年前我用一个 ajax 应用程序进行了测试,在启用 javascript 浏览时,只需修改 url 中 # 之后的内容,就可以复制 url 并将其发送给没有 javascript 的人。

那是在 PHP 中,浏览器可能是 IE6。

【讨论】:

    【解决方案2】:

    仅使用服务器代码是不可能的。 # 之后的部分根本不会在请求中发送,它永远不会离开浏览器。

    如果你想要 # 之后的部分,你必须在请求发送到服务器之前使用 Javascript 复制它,并将值放在查询字符串中。

    【讨论】:

      【解决方案3】:

      您的问题是 # 在页面中指定了一个锚点,所以 浏览器 看到:

      http://localhost/site/page.aspx?var=1&var=2

      然后在页面中查找

      <a name="link">anchor</a>
      

      由于这是客户端,您需要从 URL 中转义 # - 您无法在服务器上获取它,因为浏览器已经将其剥离。

      【讨论】:

        猜你喜欢
        • 2011-01-15
        • 1970-01-01
        • 2017-09-08
        • 2014-07-21
        • 2011-01-01
        • 2017-05-11
        • 2016-06-27
        • 2014-10-14
        • 1970-01-01
        相关资源
        最近更新 更多