webman/cors 跨域问题

andyzu

问题描述

在 webman 里安装了 composer require webman/cors ,

cors.php 文件内容如下

<?php
namespace Webman\Cors;

use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

class CORS implements MiddlewareInterface
{
    public function process(Request $request, callable $next) : Response
    {
        $response = $request->method() == 'OPTIONS' ? response('') : $next($request);
        $response->withHeaders([
            'Access-Control-Allow-Credentials' => 'true',
            'Access-Control-Allow-Origin' => $request->header('origin', '*'),
            'Access-Control-Allow-Methods' => $request->header('access-control-request-method', '*'),
            'Access-Control-Allow-Headers' => $request->header('access-control-request-headers', '*'),
        ]);

        return $response;
    }
}

但是为什么还有跨域的问题?
Access to XMLHttpRequest at 'http:// index.html#/:hxcapi.beetang.cn:8787/api/v1/bannerinfo/sts' from origin 'http://127.0.0.1:5501' has beenblocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values 'http://1270.0.1:5501, http://127.0.0.1:5501 , but only one isallowed.

请教大神们,如何设置?

1509 3 0
3个回答

静默

The 'Access-Control-Allow-Origin' header contains multiple values
意思是 Access-Control-Allow-Origin 设置了多个值,应该是你哪里还设置了这个跨域的头导致的。
整个项目里搜 Access-Control-Allow-Origin 看看哪里还有设置。

andyzu

截图
我搜索整个项目得出的结果,后面四个文件都是vendor目录里的。

  • 静默 2023-06-19

    也可能nginx代理也设置了跨域重复了,或者跨域的中间件配置middeware.php重复设置了

  • kylin87 2023-08-21

    楼上说的没错,这个webman/cors安装后自动生效了,如果自己再搞一个中间件,就会报上面的but only one isallowed的错误

小W

用nginx了吗?nginx是不是配置了Access-Control-Allow-Origin导致重复

  • 暂无评论
🔝