vue访问后台laravel的api跨域问题

1. 运行环境

Ubuntu

1). 当前使用的 Laravel 版本?

10

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.3

3). 当前系统

Ubuntu

4). 业务环境

开发环境

5). 相关软件版本

Nginx laravel vue

2. 问题描述?

前端项目vue页面访问后台项目laravel的api,返回419;

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 35

你 laravel 路由定义在 web.php 里面了吧?应该在 api.php 里面

1周前 评论
你和那棵树是一伙的 (楼主) 1周前

/app/Http/Kernel.php,api路由中间件里将 \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class 注释掉

1周前 评论
你和那棵树是一伙的 (楼主) 1周前

file 你是用的SPA认证吗,用token了吗?

1周前 评论
你和那棵树是一伙的 (楼主) 1周前
神的孩子丶都在跳舞 (作者) 1周前
你和那棵树是一伙的 (楼主) 1周前

kernel.php file

1周前 评论
神的孩子丶都在跳舞 1周前
你和那棵树是一伙的 (作者) (楼主) 1周前

看看你的app/Http/Kernel.php里是不是给api也添加了 VerifyCsrfToken中间件

1周前 评论
你和那棵树是一伙的 (楼主) 1周前

这不是跨域,关闭csrf保护

1周前 评论
你和那棵树是一伙的 (楼主) 1周前

简单粗暴点就是nginx添加

    add_header 'Access-Control-Allow-Methods' 'GET,OPTIONS,PUT,DELETE' always;
    add_header 'Access-Control-Allow-Credentials' 'true' always;
    add_header 'Access-Control-Allow-Origin' '$http_origin' always;
    add_header 'Access-Control-Expose-Headers' 'Access-Token' always;
    add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,Keep-Alive,Content-Type,accept,origin,X-Requested-With, Access-Token,Token,Device,backend,City,apiVersion' always;
1周前 评论
你和那棵树是一伙的 (楼主) 1周前

把路由写在routes/api.php下而非routes/web.php下. 因为默认后者会有CSRF保护, 除非在Http/Middleware/VerifyCsrfToken.php中的protected $except = []中添加忽略.

1周前 评论
你和那棵树是一伙的 (楼主) 1周前

其中一个错误是说:由于是在跨站上下文中,且“SameSite”值为“Lax”或“Strict”,已拒绝 Cookie “laravel_session”。但是后台的‘same_site’=>'none'设置没有lax、strict

1周前 评论

api路由是没有csrf的 是不是用了其他路由

1周前 评论
你和那棵树是一伙的 (楼主) 1周前

419 是 csrf 的问题吧

1周前 评论
你和那棵树是一伙的 (楼主) 1周前
slowlyo
1周前 评论
你和那棵树是一伙的 (楼主) 1周前

如果是单独部署的前端项目,在nginx中重定向接口。。。 如果是前后端一起的,把vue的文件放到public即可

1周前 评论
你和那棵树是一伙的 (楼主) 1周前
芝麻开门 (作者) 1周前
你和那棵树是一伙的 (楼主) 1周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!