代码之家  ›  专栏  ›  技术社区  ›  Xeoncross

在cookie头之前或之后发送HTTP头?

  •  3
  • Xeoncross  · 技术社区  · 14 年前

    我想知道在发送cookie头之前或之后发送普通头之间是否存在任何问题或差异。某些浏览器是否希望按一定顺序排列标题?如果cookie头太大,那么以后的头永远不会被解析吗?

    setcookie("TestCookie", $value);
    header("Content-type: text/javascript");
    

    header('Location: http://www.example.com/');
    setcookie("TestCookie", $value);
    

    setcookie("SuperLargeCookie", $massive_value);
    setcookie("TinyCookie", $small_value);
    header("Status: 404 Not Found");
    
    3 回复  |  直到 14 年前
        1
  •  4
  •   Shiv Kumar    14 年前

    没有区别。HTTP协议没有指定头的顺序。浏览器也不会根据标题的顺序进行区分。

    HTTP头的总长度没有限制。此限制是由服务器而不是浏览器施加的。通常在8K和16K之间。但是这是可配置的。

        2
  •  2
  •   bcosca    14 年前

    只要其他HTTP头没有被发送,这真的没关系。 setcookie() 实际写入头本身:

    Set-Cookie: SuperLargeCookie=whatever; Max-Age=3600; Version=1
    

    类似于 header() 呼叫:

    Location: http://www.example.com/redirect
    
        3
  •  1
  •   Hank    14 年前

    HTTP消息总是跨越数据包,所以很难让您填满一个数据包,除非您在其中阻塞了大量的千字节。如果你需要这样做,考虑一个更好的设计。浏览器不关心报头的顺序,因为不同的服务器(和应用程序)总是追加报头。cookie是作为HTTP头实现的,因此它们在HTTP请求中应该是这样的:

    Cookie: TestCookie=value\r\n
    Content-type: text/javascript\r\n
    \r\n
    

    我不确定状态头在您的示例中应该做什么,但我认为这不正确,因为如果代码正确执行,Web服务器将设置一个200 OK的响应代码…这个 页眉 函数页有以下示例:

    <?php
    header("HTTP/1.0 404 Not Found");
    ?>
    

    用PHP 页眉 函数,只需确保在发布任何文本之前不会将其写出。否则,你会把一切搞砸的。