在 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.
请教大神们,如何设置?
The 'Access-Control-Allow-Origin' header contains multiple values
意思是 Access-Control-Allow-Origin 设置了多个值,应该是你哪里还设置了这个跨域的头导致的。
整个项目里搜 Access-Control-Allow-Origin 看看哪里还有设置。
大神请看下帖
我搜索整个项目得出的结果,后面四个文件都是vendor目录里的。
也可能nginx代理也设置了跨域重复了,或者跨域的中间件配置middeware.php重复设置了
楼上说的没错,这个webman/cors安装后自动生效了,如果自己再搞一个中间件,就会报上面的but only one isallowed的错误
用nginx了吗?nginx是不是配置了Access-Control-Allow-Origin导致重复