CORS问题(跨域资源共享)是由于浏览器的同源策略所导致的。在Laravel后端与托管在
Pl
esk上的Nginx的Vue前端之间进行跨域请求时,可能会遇到CORS问题。
以下是一个解决CORS问题的示例代码:
在Laravel后端的路由文件中,添加以下代码:
use Illuminate\Http\Request;
// 设置CORS中间件
Route::middleware('cors')->group(function () {
// 添加需要进行CORS的路由
Route::get('/example', function (Request $request) {
// 处理请求
return response()->json(['message' => 'This is an example response'], 200);
在Laravel后端的app/Http/Middleware
文件夹中,创建一个名为CorsMiddleware.php
的中间件文件,添加以下代码:
namespace App\Http\Middleware;
use Closure;
class CorsMiddleware
* 处理传入的请求。
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
public function handle($request, Closure $next)
$response = $next($request);
// 设置允许跨域访问的域名
$response->header('Access-Control-Allow-Origin', 'http://your-vue-frontend-domain');
// 允许的请求方法
$response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
// 允许的请求头
$response->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
return $response;
在Laravel后端的app/Http/Kernel.php
文件中,将CorsMiddleware
添加到$middleware
数组中:
protected $middleware = [
// ...
\App\Http\Middleware\CorsMiddleware::class,
在Plesk上配置Nginx,打开Nginx配置文件(通常位于/etc/nginx/nginx.conf
),添加以下代码:
location / {
# 允许跨域访问的域名
add_header 'Access-Control-Allow-Origin' 'http://your-laravel-backend-domain';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
return 204;
try_files $uri $uri/ /index.php?$args;
请注意,上述示例中的http://your-vue-frontend-domain
和http://your-laravel-backend-domain
应替换为您实际使用的域名。
这样配置后,Laravel后端和托管在Plesk上的Nginx的Vue前端之间的CORS问题应该得到解决。