php中header头设置无效的原因可能有哪些?

发布于 2022-09-04 15:02:06 字数 1287 浏览 20 评论 0

laravel5.1中使用这个扩展:https://packagist.org/package...

使用方法按照这里的介绍来使用:
http://www.jianshu.com/p/8e4a...

我的代码:
//验证码

public function code($id){
      $builder = new CaptchaBuilder;
      $builder->build($width = 100, $height = 40, $font = null);
      //获取验证码的内容
      $phrase = $builder->getPhrase();
      //return $phrase;
      //把内容存入session
      //Session::flash('milkcaptcha', $phrase);
      //session('mycode',$phrase);
     
      //$pic=$builder->inline(); //这里生成图片的是base64编码
      //return "<img src='".$pic."'/ alt='验证码'>"; //这样可以正常输出

      //生成图片
      header("Cache-Control: no-cache, must-revalidate");
      header('Content-Type: image/jpeg'); //浏览器中打开后:Content-Type:text/html; charset=UTF-8 为什么会这样?
      $builder->output();

}

浏览器中的显示效果:
图片描述

补充:
看到文档中有写到,laravel中不能直接这样写header,而是应该response()->header();这样设置。
现在设置header的问题是解决了,但问题是,验证码仍然显示不出来,换了几个验证码的扩展,也自己写了个,在别的页面可以正常生成,但在laravel中就是有问题。
很是奇怪。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

像你 2022-09-11 15:02:06

header那一段注视掉 。看看您的报错把

梨涡 2022-09-11 15:02:06

常规的header('Content-Type: image/jpeg');在laravel是不起作用的
需要按照laravel的写法设置header,如下

return response($content, 200)
                  ->header('Content-Type', 'text/plain');

我们只需要把变量$content替换成验证码的文件内容。使用$builder->get()获取内容即可。

完整如下

        ////其他代码/////
        
        //header("Cache-Control: no-cache, must-revalidate");
        //header('Content-Type: image/jpeg');
        $output = $builder->get();
        return response($output, 200)
            ->header('Content-Type', 'image/jpeg');

laravel 改变header的写法参考Laravel 的请求返回 Response

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文