【问题标题】:Prevent PHP from sending the PHPSESSID cookie with requests?防止 PHP 通过请求发送 PHPSESSID cookie?
【发布时间】:2011-02-16 15:35:39
【问题描述】:

我正在提供由 PHP 生成的动态图像内容。但是对于 .php 文件的此类请求,PHPSESSID cookie 被一起发送,这是一种浪费。

是否可以阻止 PHP 将这个 cookie 与请求一起发送到 PHP 文件?还是 PHP 完全有必要工作?

感谢您的宝贵时间!

【问题讨论】:

  • 不确定你在问什么。当您在 php 脚本中使用 session_start() 时,浏览器会获得一个会话 cookie。只要浏览器有那个cookie,浏览器就会在每个请求中发送它。
  • @Rob:他基本上是在问如何在通过 PHP 提供图像时省略 cookie(我后来也意识到了这一点,因此删除了我毫无价值的答案)。马修说得对,只需使用另一个域/路径。

标签: php session-cookies


【解决方案1】:

我已经搜索过了,这是我发现的唯一对我有用的解决方案。

将以下代码添加到您的 .htaccess 文件中:

RewriteCond %{QUERY_STRING} PHPSESSID=.*$

重写规则 .* %{REQUEST_URI}? [R=301,L]

【讨论】:

  • 抱歉,这到底是在做什么?如果 QUERY_STRING 包含会话 ID,它似乎会从请求中删除所有参数并重定向。
【解决方案2】:

浏览器将发送任何适用于特定路径域组合的 cookie。您无法控制它,除非使用不同的路径和域。这就是为什么许多网站使用static content domains

【讨论】:

  • Aahh.. 我使用静态内容域来处理一些内容。在这种情况下,不知何故未能使用我的思想。无论如何,谢谢马修!
【解决方案3】:

您是说“不要将 cookie 用于会话,使用 phpsessid 作为获取参数”,php 不赞成这样做是有原因的。 Cookie 将始终发送到同一个域。如果你真的想避免 MINIMAL 开销,不需要 cookie 的资源应该在一个单独的域中,这样 cookie 就不会被发送。 IE。 static.domain.com 用于静态内容。 老实说,这不值得麻烦。

【讨论】:

    【解决方案4】:

    这由 PHP 的会话函数使用。如果您的网站不使用会话,那么这可能不应该显示。

    请记住,cookie 是由浏览器发送的,您无法控制它的传输。

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多