不設(shè)置Header頭沒有問題,把header頭加上就出現(xiàn)
<?php
namespace app\middleware;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;
class AccessControl implements MiddlewareInterface
{
public function process(Request $request, callable $handler) : Response
{
// 如果是opitons請(qǐng)求則返回一個(gè)空的響應(yīng),否則繼續(xù)向洋蔥芯穿越,并得到一個(gè)響應(yīng)
$response = $request->method() == 'OPTIONS' ? response('') : $handler($request);
// 給響應(yīng)添加跨域相關(guān)的http頭
$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', 'Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent, Authorization, X-Token'),
]);
return $response;
}
}
Access to XMLHttpRequest at 'http://A' from origin 'http://B' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
如果ajax里設(shè)置了header,返回的 Access-Control-Allow-Headers 要把這個(gè)header加進(jìn)去,否則報(bào)跨域錯(cuò)誤
'Access-Control-Allow-Headers' => $request->header('access-control-request-headers', 'Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent, Authorization, X-Token'),
改成
'Access-Control-Allow-Headers' => 'Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent, Authorization, X-Token',