Slim框架中$token非空时追加Token至Header失败问题排查
问题原因与解决方案
嘿,我一眼就看出问题所在啦!你遇到的情况是因为Slim框架的响应对象是不可变的——所有以with开头的方法(比如withHeader、withAddedHeader)都不会修改原对象,而是返回一个包含新修改的全新响应实例。
你原来的代码里,在if块中调用了$res->withAddedHeader('token', $token),但没有把返回的新对象重新赋值给$res变量,所以原来的$res根本没带上这个token头!
修正后的代码
$res = $this->response->withHeader('Content-type', 'application/json'); if ($token !== null) { // 关键:把withAddedHeader返回的新响应对象重新赋值给$res $res = $res->withAddedHeader('token', $token); }
补充说明
这是PSR-7 HTTP消息标准的要求,不可变对象能避免在复杂请求流程中意外修改响应状态,让代码更可靠。记住,以后用Slim的with*方法时,一定要记得接收它返回的新对象,否则你的修改就白费啦~
内容的提问来源于stack exchange,提问作者Benedict E. Pranata
相关产品推荐
相关产品推荐

