Laravel(Lumen) 导出表格文件响应跨域问题

普通响应跨域,在中间件里是这么设置,设置的是header()方法:

php 复制代码
$response->header('Access-Control-Allow-Origin', '*');
$response->header('Access-Control-Allow-Credentials', 'true');
$response->header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Control-Type, Content-Type, token, Accept, x-access-sign, x-access-time, Content-Disposition");
$response->header("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");

而遇到导出表格文件流,这种文件响应,需要这么设置,设置的是headers属性:

php 复制代码
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Credentials', 'true');
$response->headers->set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Control-Type, Content-Type, token, Accept, x-access-sign, x-access-time, Content-Disposition");
$response->headers->set("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");

完整示例如下:

php 复制代码
if (!$response instanceof BinaryFileResponse) {
    //普通响应 使使用header()方法来设置CORS头
    $response->header('Access-Control-Allow-Origin', '*');
    $response->header('Access-Control-Allow-Credentials', 'true');
    $response->header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Control-Type, Content-Type, token, Accept, x-access-sign, x-access-time, Content-Disposition");
    $response->header("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
}else{
    //文件响应 使用headers属性来设置CORS头
    $response->headers->set('Access-Control-Allow-Origin', '*');
    $response->headers->set('Access-Control-Allow-Credentials', 'true');
    $response->headers->set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Control-Type, Content-Type, token, Accept, x-access-sign, x-access-time, Content-Disposition");
    $response->headers->set("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
}
if ($request->isMethod('OPTIONS')) return $response; //OPTIONS不记录日志
相关推荐
是娇娇公主~2 小时前
TCP拥塞控制
网络协议·tcp/ip·php
ICT技术最前线2 小时前
路由策略优化基本思路和方法
开发语言·php
lxp1997412 小时前
PHP框架自带队列--更新中
开发语言·php
JienDa3 小时前
PHP 静态分析工具实战:PHPStan 和 Psalm 完全指南
开发语言·php
CHINAHEAO3 小时前
Bagisto修复php弃用警告,看着难受
开发语言·php
晚风吹人醒.3 小时前
LAMP(Linux+Apache+MySQL+PHP)完整搭建过程
linux·服务器·mysql·centos·php·apache·lamp
_Orch1d4 小时前
《网络攻击与防御》复习笔记
笔记·安全·php
Lynnxiaowen4 小时前
今天我们继续DevOps内容Jenkins自动化部署PHP项目
linux·自动化·jenkins·php·devops
Lethehong4 小时前
GLM-4.7 与 MiniMax M2.1 工程实测:一次性交付与长期 Agent 的分水岭
开发语言·php·ai ping·glm4.7·minimaxm2.1
狂奔的sherry4 小时前
librespeed-cli连接超时原因分析
php·speedtest