【问题标题】:what does php's header function do?php的头函数是做什么的?
【发布时间】:2015-06-21 13:37:55
【问题描述】:

我找不到任何解决此问题的方法。 我很难使用这段代码。根据我搜索的内容: HTTP/1.1 200 OK - 表示页面良好或正常。 我不理解这个标题功能部分。 它实际上是代码的一部分。

我的问题是:

  1. 为什么这个代码发送header('HTTP/1.1 200 OK');?我知道这个代码意味着页面是好的,但我们为什么要发送这个代码?

  2. 什么是缓存控制部分,如果代码发送它会发生什么?

  3. Expires: 是什么,日期是 1970 年? (请简单解释)

  4. 如果代码发送header('Content-type: application/json');这部分会发生什么,我们为什么要发送这个?

代码在这里:

function json_response( $data, $error=false ) {
  if( $error )
    header('HTTP/1.1 500 JSON Error');
else
    header('HTTP/1.1 200 OK');

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 01 Jan 1970 00:00:00 GMT');
header('Content-type: application/json');

// Convert strings/integers into an array before outputting data...
if(!is_array($data))
    echo json_encode(array($data), true);
else
    echo json_encode($data, true);
exit;
}

【问题讨论】:

  • RFC7230
  • 这个问题可以通过在 Google 或任何其他搜索引擎上进行简单搜索来回答。 header() 函数在文档中有很好的解释。
  • 我在这里发帖是因为我在搜索引擎中没有找到任何答案

标签: php function http header content-type


【解决方案1】:

为什么这段代码会发送“header('HTTP/1.1 200 OK');”?我知道这个代码意味着页面很好,但我们为什么要发送这个代码??_

这告诉您的浏览器找到了请求的脚本。然后,浏览器可以假设它也会获取一些其他数据。

什么是缓存控制部分??如果代码发送它会发生什么?_

这告诉浏览器和中间缓存不要缓存我发送的数据。这样,当您对该数据发出第二次请求时,它必须转到您的服务器并重新运行数据收集过程,而不是从浏览器缓存或 Internet 上某处的中间缓存中获取数据,在您的浏览器和你的服务器。

什么是“过期:”?日期是 1970 年? (请简单解释)_

这又是为了缓存控制。是说缓存应该在 1970 年到期,换句话说,如果你缓存了它,你应该删除它,因为 1970 是很久以前的事了。

如果代码发送 header('Content-type: application/json'); 会发生什么这部分?我们为什么要发送这个???_

这是告诉浏览器您发送的数据是 JSON 格式,因此如何处理它,在您的情况下,这意味着将发送的 JSON 字符串转换为 javascript 对象,以便 javascript 代码可以处理它作为原生对象,不必手动将 JSON 字符串转换为 Javascript 对象。

【讨论】:

  • 使用header有什么区别('HTTP/1.1 200 OK');不使用??我试过那个代码,但我看不出有什么区别,我看到很多没有那个标题的 php 代码
【解决方案2】:

您只需返回浏览器,您的内容类型为 json (header('Content-type: application/json');),该内容将在检索后直接过期 (header('Expires: Mon, 01 Jan 1970 00:00:00 GMT');)。如果您的浏览器没有过期已经收到的代码并再次请求它,您会说这些代码不应该从缓存中使用。相反,它应该再次从服务器检索 (header('Cache-Control: no-cache, must-revalidate');)。

header('HTTP/1.1 200 OK'); 只是在您的代码前面设置了另一个标头的情况下设置的(我认为)。通常,如果没有设置标头,则可以省略。

【讨论】:

    【解决方案3】:

    代码从脚本返回一个json格式的数据。

    如果没有错误,则 HTTP/1.1 200 OK 由标头返回,这意味着数据将打印到页面。

    缓存控制意味着您请求的数据无法写入内存 - 这意味着每次加载页面时,您都必须重新加载从页面获取的数据。

    过期 - 我想它的存在与缓存控制相同的原因,如果过期日期总是过去,这意味着每次访问页面时,你都会重新加载它给你的所有数据。

    Application/json 指定脚本返回的数据应该被视为 JSON 类型,什么是 JSON,google 一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2019-10-12
      • 2010-12-20
      • 2010-10-02
      相关资源
      最近更新 更多