安裝webman/cors 后 程序還是報跨域錯誤,在StaticFile 靜態(tài)文件中間件里加了設(shè)置header還是無效,
class StaticFile implements MiddlewareInterface
{
public function process(Request $request, callable $next): Response
{
// Access to files beginning with. Is prohibited
if (strpos($request->path(), '/.') !== false) {
return response('<h1>403 forbidden</h1>', 403);
}
/** @var Response $response */
if ($request->method() == 'OPTIONS') {
$response = response('');
} else {
$response = $next($request);
}
// Add cross domain HTTP header
$response->withHeaders([
'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://192.168.2.131:8585/upload/upload' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
windows php8.0 webman1.5
修改nginx.conf 跨域已經(jīng)可用了 ,但還是不知道代碼里應(yīng)該怎么實現(xiàn)~~~
server { ....
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET,POST';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}
我是自己寫了一個
class CrossDomain implements MiddlewareInterface
{
public function process(Request $request, callable $handler): Response
{
// 如果是options請求則返回一個空響應(yīng),否則繼續(xù)向洋蔥芯穿越,并得到一個響應(yīng)
$response = strtoupper($request->method()) === 'OPTIONS' ? response('', 204) : $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', '*'),
]);
return $response;
}
}
return [
// 全局作用域中間件
'' => [
// 跨域處理
app\middleware\CrossDomain::class,
],
];