在Laravel开发和生产中使用不同的CORS(跨域资源共享)配置,可以通过以下步骤实现:
<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
public function handle($request, Closure $next)
{
$allowedOrigins = ['http://localhost:3000']; // 允许的域名,这里以localhost:3000为例
$origin = $request->header('Origin');
if (in_array($origin, $allowedOrigins)) {
return $next($request)
->header('Access-Control-Allow-Origin', $origin)
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
}
return $next($request);
}
}
在中间件的handle方法中,我们首先定义允许的域名($allowedOrigins),然后获取请求头中的Origin字段。如果请求的Origin在允许的域名列表中,我们将在响应头中添加相应的CORS头,允许跨域请求。
为了在开发环境中使用该中间件,需要将其注册到全局中间件列表或指定路由中间件。
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '$http_origin' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Max-Age' 1728000 always;
add_header 'Content-Length' 0 always;
return 204;
}
add_header 'Access-Control-Allow-Origin' '$http_origin' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
try_files $uri $uri/ /index.php?$query_string;
}
上述配置将在每个请求中添加CORS头,允许跨域请求。注意替换add_header 'Access-Control-Allow-Origin' '$http_origin' always;
中的$http_origin
为你的域名或允许的域名列表。
以上是关于如何在Laravel开发和生产中使用不同的CORS配置的详细解答。请根据实际情况进行配置,并确保服务器和应用程序的安全性和稳定性。
领取专属 10元无门槛券
手把手带您无忧上云