You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为mPDF生成的PDF添加Referer以解决图片域名限制问题

如何为mPDF生成的PDF添加Referer以解决图片域名限制问题

嗨,这个问题我太熟了!你猜得没错,完全可以通过给mPDF请求图片时添加Referer头来解决这个域名限制的问题——毕竟服务器拦截图片就是因为检测不到合法的Referer,以为是非法直接访问嘛。

我给你说具体怎么操作,分两种情况(主要看你的mPDF版本):

  • 如果你用的是mPDF 7.x及以上的新版本:
    初始化mPDF之后,直接设置它的curlOptions配置数组,把合法的Referer加进去就行,代码示例如下:

    // 创建mPDF实例
    $mpdf = new \Mpdf\Mpdf();
    
    // 配置curl请求头,添加上服务器允许的Referer
    $mpdf->curlOptions = [
        CURLOPT_REFERER => 'https://你的合法域名.com', // 替换成服务器白名单里的域名
        CURLOPT_FOLLOWLOCATION => true, // 可选,处理图片地址的跳转
    ];
    
    // 加载包含受限图片的HTML
    $html = '<div><img src="https://受限资源域名.com/xxx/your-image.jpg" alt="受限图片"></div>';
    $mpdf->WriteHTML($html);
    
    // 输出或保存PDF
    $mpdf->Output('output.pdf', 'I');
    
  • 要是你用的是比较老的mPDF版本(比如6.x及之前):
    旧版的mPDF用SetCurlOptions()方法来设置,代码逻辑差不多:

    $mpdf = new mPDF();
    $mpdf->SetCurlOptions([
        CURLOPT_REFERER => 'https://你的合法域名.com',
    ]);
    // 后续的WriteHTML和Output步骤和上面一致
    

这里要特别提醒你:Referer的值一定要完全匹配服务器的白名单规则,比如有的服务器要求是完整的域名(带https/http),有的甚至要求是具体的页面路径。你可以先手动用curl测试下合法性,比如在终端敲这个命令:

curl -H "Referer: https://你的合法域名.com" https://受限资源域名.com/xxx/your-image.jpg

如果这个命令能成功返回图片内容,那说明Referer是对的,mPDF配置后肯定能加载出图片;要是不行,可能服务器还有其他限制(比如User-Agent校验),那你可以在curlOptions里再加个CURLOPT_USERAGENT,模拟浏览器的UA,比如Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36。

总之核心思路就是让mPDF请求图片时带上服务器认可的Referer头,这样就能绕过域名限制,正常显示图片啦!

备注:内容来源于stack exchange,提问作者Sanidhya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 08:54:29