我正在做一些测试。我正在vue中开发一个后端为laravel的应用程序。后端位于当前处于联机状态的HTTPS域中。我想从localhost访问在线的API。主要问题是CORS。
我使用Laravel 9。在App\Http\Middleware中,我用以下代码创建了Cors.php。
class CORS
{
public function handle($request, Closure $next)
{
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => '*',
'Access-Control-Allow-Headers' => 'Content-Type,
X-Auth-Token, Origin, Authorization',
'Access-Control-Max-Age' => '1728000',
];
if ($request->getMethod() == "OPTIONS") {
// The client-side application can set only headers
// allowed in Access-Control-Allow-Headers
return response()->json('OK', 200, $headers);
}
$response = $next($request);
foreach ($headers as $key => $value) {
$response->header($key, $value);
}
return $response;
}
}
在App\Http Kernel.php中,我添加了这个。
protected $middleware = [
AppHttpMiddlewareCors::class,
];
protected $routeMiddleware = [
'cors' => AppHttpMiddlewareCors::class
];
问题仍然存在,并且Access-Control-Allow-Origin
不存在。
我可以从本地主机调用HTTPS API吗?如何
您可以直接在Nginx配置中添加头(在生产中避免这种情况(
location you-location {
add_header Access-Control-Allow-Origin *;
}