也许是一个愚蠢的问题,但我不知道PHP在这个意义上是如何工作的.

假设您从一个JavaScript客户端向您的PHP后端发出一个HTTP请求.然后,在服务器端的PHP中,您可以执行如下操作:

// validate input
// process input
header(...);
// execute internal API request, from this server in PHP, using guzzle, 
// curl or whatever, to an external API, and wait for the response
...
echo $response;

换句话说,当在执行内部API请求之前调用header()时,是否将HTTP标头发送到外部API,并在最终响应中丢失/不转发到JavaScript客户端?

推荐答案

这取决于如何配置PHP和您的Web服务器,特别是在输出/响应缓冲方面.

严格按照PHP进行操作:

  • 如果启用了output_buffering,则整个请求必须在any响应返回给客户端之前完成,包括HTTP头.
  • 如果未启用output_buffering,则一旦生成非标头输出,就会发出HTTP标头.之后,try 设置另一个头会导致classic 的"headers already sent"错误.

当然,需要注意的是,可以使用userland code来启用/禁用/刷新/清除缓冲,这进一步混淆了问题.

之后,由您的HTTP服务器决定要做什么,但通常默认做法是立即转发报头,并在一定程度上缓冲输出,这样就不会发送太多较小的数据包,因为较大的数据包很少.

Php相关问答推荐

谷歌云SQL / mysql谁是对的?

在AJX请求中使用简写后,FormData出现非法调用错误

我如何知道BaseController中当前运行的是哪个控制器?

我需要多个SELECT语句的结果(使用由php ECHO创建的表中显示的Limit(X)

PHP-转义字符串内的双反斜杠

使用.htaccess将任何路由重定向到文件

使用正则表达式搜索两个子字符串(没有重叠/共享字符)

EBay Inventory API createOrReplaceInventoryItem出错

使用php创建表格和插入数据

列出所有WooCommerce处理订单中的产品数量,SKU和品牌

在WooCommerce获取所有具有全球产品属性品牌的简单产品

如何使用MS Graph PHP SDK V2下载文件

根据WooCommerce的定制订单状态增加产品库存

Wordpress,配置一周第一天选项

过滤会员计划标题和标签

如何判断php中wordpress路径之外的文件夹是否存在?

PHP 中使用 JSON 的自定义会话处理程序会因错误而 destruct 会话

PHP Symfony 在测试.env文件中将接口自动装配作为构造函数参数,但使用接口的特定类

如何在光速网络服务器中使用 apache ..htaccess

基于其他数组创建多维数组 struct