【问题标题】:How do I get the URL path after a redirect -- with Javascript?如何在重定向后获取 URL 路径 - 使用 Javascript?
【发布时间】:2010-09-25 00:30:27
【问题描述】:

这可能有点离题,但一位朋友问我这件事,这让我有点困扰。如果服务器将所有请求重定向到默认文件(例如 index.html),您如何确定地址栏中的当前路径。

假设您输入了:

www.example.com/

并且您的服务器配置会自动将此请求重定向到

www.example.com/index.html

但是你网址栏中的地址并没有改变!那么如何使用 Javascript 确定此 url 上的路径是 index.html?

我查看了 location.pathname 但那只是给了我 /。

有什么想法吗?

【问题讨论】:

    标签: javascript dom


    【解决方案1】:

    如果重定向发生在服务器上,则浏览器不知道它,您无法访问 javascript 中的实际资源。例如,一个 servlet 可能“转发”到服务器上的另一个资源。

    如果服务器向浏览器发送重定向命令并且浏览器请求新的 url,那么浏览器确实知道它并且您可以获得它。

    【讨论】:

      【解决方案2】:

      没有办法做到这一点,除非以某种方式将网络服务器的文件名嵌入到文档中。就浏览器而言,没有index.html,页面只有/

      【讨论】:

        【解决方案3】:

        问题在于它实际上不是重定向。当您在 Web 浏览器中键入 'www.example.com' 时,浏览器会生成如下 HTTP 请求:

        GET / HTTP/1.1
        User-Agent: curl/7.16.3 (i686-pc-cygwin) libcurl/7.16.3 OpenSSL/
        0.9.8h zlib/1.2.3 libssh2/0.15-CVS
        Host: www.example.com
        Accept: */*
        

        请注意,它请求的是一个字面意思为/ 的文档。服务器有两种可能的响应:

        HTTP/1.1 200 OK
        (more headers)
        
        Content...
        

        HTTP/1.1 301 Moved Permanently
        Location: (location of redirect)
        (more headers)
        
        (Optional content)
        

        在案例 #2 中,您可以获得重定向位置,因为它实际上是一个重定向。但是在案例 #1 中,服务器 正在执行重定向:它看到了对 / 的请求,而是为它的索引页面提供了内容(例如 index.htmlindex.phpdefault.aspx 等)。就您的浏览器而言,这只是文档/ 的内容。它不知道它已被重定向。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-26
          • 1970-01-01
          • 2011-05-28
          • 2012-10-04
          • 1970-01-01
          • 2010-10-27
          • 1970-01-01
          相关资源
          最近更新 更多