1. WAOYOU首页
  2. 编程

Thinkphp 自定义Response页面Content-Type不生效踩坑合集

Thinkphp自定义Response页面Content-Type常见的两种方式有:header(‘Content-Type:text/json;charset=utf-8’)和Config::set(‘default_return_type’,’json’)。但是经过踩坑测试这两种方式各有特殊的应用方式。

环境:PHP:7.3.28,Thinkphp:5.0.24

测试代码:


public function index()
{
    //Config::set('default_return_type','json');
    // header('Content-Type:application/json;charset=utf-8');
    header('Content-Type:text/json;charset=utf-8');
    //header('Content-Type:text/javascript;charset=utf-8');
    $json = [['data'=>['PHP'=>phpversion(),'Thinkphp'=>THINK_VERSION,6,'时/间'=>time(),'D'],'B']];
    $rejson=json_encode($json,JSON_UNESCAPED_UNICODE);//中文不转为unicode,对应的数字256
    //exit ($rejson);
    exit($rejson);
}

header(‘Content-Type:text/json;charset=utf-8’)

在Thinkphp中使用和原生php一样利用header(‘Content-Type:text/json;charset=utf-8’)来自定义Response页面Content-Type的时候,支持‘application/json’,支持‘text/json’,支持‘text/javascript’,

但是只有使用exit返回时自定义的Content-Type才会生效,使用return返回时自定义Content-Type不生效(此时生效的是Thinkphp框架中Config的default_return_type设置,默认为html即‘text/html’)。

Thinkphp 自定义Response页面Content-Type不生效踩坑合集
当使用: header(‘Content-Type:text/json;charset=utf-8’); exit返回时效果

 

Thinkphp 自定义Response页面Content-Type不生效踩坑合集
当使用: header(‘Content-Type:application/json;charset=utf-8’); exit返回时效果

 

Thinkphp 自定义Response页面Content-Type不生效踩坑合集
当使用: header(‘Content-Type:application/json;charset=utf-8’); return返回时,Response的Content-Type默认为Config中的default_return_type的默认值html即:text/html;

Config::set(‘default_return_type’,’json’)

自定义Response页面Content-Type的时候,thinkphp默认只支持‘application/json’,不支持‘text/json’,但是必须要用return返回。

Thinkphp 自定义Response页面Content-Type不生效踩坑合集
当使用:Config::set(‘default_return_type’,’json’);return返回时效果

 

Thinkphp 自定义Response页面Content-Type不生效踩坑合集
当使用:Config::set(‘default_return_type’,’json’);exit返回时效果,Config::set(‘default_return_type’,’json’)不生效,Response的Content-Type默认为Config中的default_return_type的默认值html即:text/html;

如需帮助请联系客服

原创文章,作者:阳光,如若转载,请注明出处:https://www.waoyou.com/411.html

联系我们

在线咨询:点击这里给我发消息

电话:17638350532

工作时间:周一至周五,9:30-18:30,节假日休息

QR code