lsky-org / lsky-pro

☁️兰空图床(Lsky Pro) - Your photo album on the cloud.
https://www.lsky.pro
GNU General Public License v3.0
4.16k stars 612 forks source link

前端通过axios或者fetch post请求报错419 #705

Open ArSrNa opened 1 year ago

ArSrNa commented 1 year ago

无论是 /token还是 /upload,在header和数据结构完全正确的情况下,依然返回419错误

image

image

image

但是如果从apifox等软件发送的请求,一点问题都没有。 image

        const formData = new FormData();
        const obj = file.originFileObj; //这里是antd的文件上传组件的文件
        const blob = new Blob([obj], { type: obj.type });
        formData.append('file', blob, obj.name);
        formData.append('strategy_id', 2);
        console.log(blob);
        axios({
            url: 'http://xxxxxxx/api/v1/upload',
            method: 'post',
            data: formData,
            headers: {
                "Content-Type": "multipart/form-data",
                "Accept": "application/json",
                "Authorization": 'Bearer 1|LK4CkAEOOoNdxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            }
        }).then(msg =>console.log(msg))
          .catch(err => console.log(err));

如果前端尝试使用get,是完全能够正常的,我甚至尝试了走代理,依然无法解决csrf token报错问题;

在全网,我没找到第二个跟我一样解决不了的问题

wisp-x commented 1 year ago

在控制台检查一下headers是否正确的发送了,然后再看看后端是不是有cdn过滤了headers

ArSrNa commented 1 year ago

在控制台检查一下headers是否正确的发送了,然后再看看后端是不是有cdn过滤了headers

headers在上文图中已经有了,这是浏览器发送出去请求的 image

负载内容也是按文档来的 image 发送出去之后得到的请求就是 {message: "CSRF token mismatch."}

在apifox里面参数跟浏览器测试参数一致,但是apifox完全正常。

wisp-x commented 1 year ago

尝试注释掉这一行试试: https://github.com/lsky-org/lsky-pro/blob/911275c13b038c7a8b710de44664f23887eeb6f6/config/sanctum.php#L61