It does not have HTTP ok status.

共 2410字,需浏览 5分钟

 ·

2024-04-11 04:52

戳上方“ 执行上下文 ”,选择“ 置顶公众号

关键时刻,第一时间送达!

c6c555a3e179e8810e8119729127bdaa.webp e82326afb779684ac21ce90824ac6674.webp
​​ 因为现在博客 (cuixinxin.cn) 一直是用的 WordPress 来搭建的。以前一个自己用 vue二开的博客就不怎么使用了。 后来因为服务器到期迁移,新服务器因为 WordPress 可以用宝塔来部署,当时也想着lieme也用宝塔面板来部署管理。 结果因为中间时间太长了。自己当初怎么部署 Lieme 的已经全部忘记了。只记得要配置 ngnix 和跨域什么的。导致在宝塔部署完成后,C 端页面是可以正常访问的。但是 Lieme站的管理后台是报跨域的问题。 因为已经有新博客了,当时把 Lieme站 迁移到了 cuixinxin.cn  所以这个问题就一直扔在那没有管。因为也不怎么用啊。 但是毕竟有时候还是会打开 Lieme 看一下。因为有的服务还是用的这个域名来部署。 正好过年前  cuixinxin.cn  的备案掉了。因为备案碰到过年其实这段时间博客是一直不能访问的。我也只好耐心的等着备案完成。这时候有看到 Lieme 的跨域,强迫症上来了,小样我还整不了你。 因为距离上次部署的时间太久了,好长一段时间也没有折腾部署相关的问题。感觉有种无从下手的感觉。 c60b8db73c3c952faac97ea74bfd8655.webp
本地访问是没有任何问题的。而且博客也是可以获取到数据,但切换的 admin 就不行了。 efd657b2fe38d610c435d584e3dc0d53.webp
因为本地是访问好好的,但是部署到服务器就有问题,一开始我也没有注意看一直以为是跨域的问题。就去 php设置 header 和 去 ngnix 中设置 location。但是死活就是不行。 fafb43dad3616d167b932d7c071044f2.webp
我一直以为是 ngnix配置不正确或者是博客的处理方式和 admin 的接口有差异,但是因为时间太久了。根本想不起来了。 其实下面的报错是浏览器发送 options 预请求的时候没有正确处理。导致预请求过不去。所以后面的 admin的相关接口就报错。 180748f7343b4a65d55e0f1ccd1ed839.webp
589a1858996f9de20c4ba2468257baeb.webp
因为我的浏览器的 Network 开了 FETCH/XHR  的过滤。所以根本没有看到 OPTIONS 的预请求。一直纠结在跨域上面。然后本来让以前的同事帮看是不是 php哪里问题的。然后给了我上面的截图。我放开之后才知道了原因所在。

然后就去后端代码中将 OPTIONS 单独处理了一下。

                    header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods:  *');
header('Access-Control-Allow-Headers: *');

if($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
    //允许的源域名
    header("Access-Control-Allow-Origin: *");
    //允许的请求头信息
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
    //允许的请求类型
    header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
    exit;
}

736ca9be96970a22c4e83482e42e7ed3.webp

发现 OPTIONS 正常处理后又出现了下面问题。

cccf397448af90c2965a5b68992ea595.webp

只要将 header 改成下面的就好了。

                    //处理跨域预检请求
if($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){
    //允许的源域名
    header("Access-Control-Allow-Origin: *");
    //允许的请求头信息
    header("Access-Control-Allow-Headers: *");
    //允许的请求类型
    header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
    exit;
}

总结

由于 Network 一直未全部打开,导致没有看到预请求的 OPTIONS 没有成功,我就一直以为是 Ngnix或者后端代码有问题。下回排查问题得注意这个了。 


从前ing

45e09fc8b30fc6bbfd829260d73814ea.webp



71134eb4c3e78411b8747bb46bd97d0d.webp

浏览 9
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报