laravel5.4已经增加头部跨域中间件的情况下,页面仍然无法收到响应结果

1. 运行环境

1). 当前使用的 Laravel 版本?

Laravel Framework 5.4.36

2). 当前使用的 php/php-fpm 版本?

PHP 版本:PHP 5.6.40 (cli) (built: Oct 27 2022 14:45:49)

php-fpm 版本:

3). 当前系统

CentOS 8.4

4). 业务环境

开发环境

5). 相关软件版本

2. 问题描述?

项目是前后端分离,laravel只提供接口数据。
部署时使用lnmp集成安装包,在A服务器上使用的是v1.7,B服务器上使用的是v1.9。
两个服务器的php、mysql、apache均使用相同的版本。
项目部署在一个服务器A上,可以正常运行。现在将A服务器的代码完全复制到B服务器上,并设置好vhost后,访问页面出现问题。
A服务器上,页面可以正常发送跨域ajax请求,并返回正确数据
B服务器上,则无法正常获取数据,没有响应
Chrome浏览器控制台会输出

POST 接口地址 net::ERR_EMPTY_RESPONSE

后端为防止跨域问题出现,已经增加中间件处理

<?php
namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Log;

class Cors
{
    public function handle($request, Closure $next) {
        $IlluminateResponse = 'Illuminate\Http\Response';
        $SymfonyResponse = 'Symfony\Component\HttpFoundation\Response';
        $response = $next($request);
        $headers = [
            'Access-Control-Allow-Origin' => '*',
            'Access-Control-Allow-Credentials' => 'true',
            'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, PATCH, DELETE',
            'Access-Control-Allow-Headers' => 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization , Access-Control-Request-Headers, X-CSRF-TOKEN'
        ];

        if ($response instanceof $IlluminateResponse) {
            foreach ($headers as $key => $value) {
                $response->header($key, $value);
            }
        }

        if ($response instanceof $SymfonyResponse) {
            foreach ($headers as $key => $value) {
                $response->headers->set($key, $value);
            }
        }
        // 日志记录
        return $response;
    }
}

通过后台的mysql的监听日志可以看到,数据库完成了所有的业务查询。

在上述引用代码中,“日志记录”位置使用Log::info($response)记录变量数据,也能获取完整数据(包含中间件设置的头部,及相关业务数据)。

apache的vhost中也尝试增加了Header set Access-Control-Allow-Origin *,依然没有效果

防火墙firewall已经添加80端口。

希望能找到此问题的原因~~

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!