代码之家  ›  专栏  ›  技术社区  ›  Stijn Sanders

Apache CGI重定向到绝对URI无效

  •  2
  • Stijn Sanders  · 技术社区  · 15 年前

    Location: /cgi-bin/mycgi.exe/something/
    

    但这确实:

    Location: something/
    

    我做错什么了吗?还是我在Apache中发现了一个bug?(如果是的话,我应该在哪里以及如何最好地发布?)

    2 回复  |  直到 15 年前
        1
  •  2
  •   bobince    15 年前

    通常,“Location”包含完整的URL,包括http:和主机名。这就是DVK概述的情况。

    位置:/cgi-bin/mycgi.exe/something/

    这实际上是另一回事:内部重定向。它的定义是 the CGI specification

    地点:什么/

    另一方面,这也算不了什么。它不是完整的URL,也不是虚拟路径,因为它不是以“/”开头的。Apache不知道如何处理它,所以它只是猜测它不是一个虚拟路径,所以将它吐回浏览器,没有进一步的注释。

    在“Location”标题中将此消息发送到浏览器是无效的,但许多浏览器都会允许这样做,这就是为什么它看起来可以工作的原因。实际上,您应该传递完整的URL:

    Location: http://www.example.com/cgi-bin/mycgi.exe/something/
    
        2
  •  0
  •   DVK    15 年前

    1) 需要明确的是,重定向功能(例如“看到时做什么”位置:http响应)在浏览器中,而不是Apache中。我想你知道,但我想确认一下。它之所以与此相关是因为 as per the RFC http://your.web.server/cgi-bin/mycgi.exe/something/

    虽然有些web客户机接受带有相对重定向的301,但其他客户机不接受。

    谢谢