WordPress CORS问题一例


(本文最先发表于Zhu’s Blog,未经书面授权许可,任何个人和组织不得以任何形式转载、引用本人的任何文章。本人保留追究侵权者法律责任的权利。)

  本文记录阿猪在使用WordPress REST API为跨站应用做身份认证时遇到的一例CORS问题。经过一番折腾,最后发现问题出在使用的REST API Authentication插件在处理HTTP请求时与WordPress原生的REST API有重复。

  在WordPress的原生REST API中,支持Cookie Authentication和Basic Authentication两种认证方式。然而目前比较主流的认证方式是Json Web Token(简称JWT)和OAuth2.0,需要借助第三方插件实现。以JWT为例,基本逻辑是使用POST方式向生成token的endpoint发送用户名和密码,如果用户名、密码正确,则返回的Headers中会包含token信息,后续使用REST API时,只要每次在Header中包含Authorization: Bearer <json-web-token>就可以了。

  阿猪最先使用的是miniOrange出品的WordPress REST API Authentication插件。在WordPress中和在本地测试请求生成token都正常,但是在跨站应用中测试时,浏览器的控制台却报错:Access to fetch at 'https://azhu.site/wp-json/api/v1/token-validate' from origin 'https://xxx.azhu.site' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

  CORS policy是什么鬼?出于安全考虑,浏览器默认会执行同源策略(Same-origin policy),只有同源(URI、主机名、端口相同)的两个页面才被允许相互访问资源。但是在WEB应用中,跨站访问资源是很常见的需求,这就涉及到“跨源资源分享”(Cross-Origin Resource Sharing)的问题。

  经过百度和ChatGPT的一通搜索,大部分的回答是说Nginx的配置不正确,没有开启Access-Control-Allow-Origin这个Header。按照ChatGPT的指导在Nginx的配置文件中添加了相应的Header信息的配置后,可以正常生成token了。以下代码供参考:

http {...server {...location / {...add_header 'Access-Control-Allow-Origin' 'https://xxx.azhu.site';//将url替换为*表示允许所有访问源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';...}...}...
}

  这里顺便说一下,如果你和阿猪一样使用的是OneinStack的LNMP+WordPress全家桶,那么Nginx的配置文件位置是在/usr/local/nginx/conf/vhost/wordpress.conf,而不是在/usr/local/nginx/conf/nginx.conf

  但是还没高兴多久,很快又产生了新的问题。阿猪使用生成的jwt通过GET方式向WordPress REST API请求登录用户信息的时候,浏览器的控制台出现如下错误信息:
Access to fetch at 'https://azhu.site/wp-json/wp/v2/users/me' from origin 'https://xxx.azhu.site' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values 'https://xxx.azhu.site, https://xxx.azhu.site', but only one is allowed. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
在这里插入图片描述
  再次经过百度和ChatGPT的一通搜索,大部分的回答是说Nginx的配置不正确,有重复的Access-Control-Allow-Origin配置。但是阿猪翻遍了Nginx目录下的所有conf文件,也没有找到重复的Access-Control-Allow-Origin配置。如果把仅有的Access-Control-Allow-Origin配置删除,则又会回到最初的 No 'Access-Control-Allow-Origin' header is present on the requested resource问题。阿猪又尝试了各种搜索到的办法,但是仍然没有解决。

  后来阿猪想,会不会是WordPress的程序中也有响应Headers信息的语句,从而导致了这个问题。毕竟先前验证token的时候使用的也是GET方法,响应是正常的,没有道理同样是GET请求,服务器区别对待。再仔细对比两个endpoint的路径,一个是第三方插件生成的/wp-json/api/v1/token-validate,一个是WordPress原生的/wp-json/wp/v2/users/me。可能是第三方插件和WordPress都在同一个HTTP请求中输出了headers信息,从而导致了重复。搜索了一下WordPress的代码,果然有几个文件中包含Access-Control-Allow-Origin

  阿猪首先尝试更换JWT插件,毕竟如果换个插件能解决,就可以省去改代码的麻烦了。这次阿猪运气好,换了Enrique Chavez的JWT Authentication for WP-API插件后,问题解决了。如果你也正在被这个问题困扰,希望这篇文章能帮助到你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68492.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何画业务流程图?

业务流程图是用来描述客户业务作业方式的有效手段&#xff0c;它可以清晰地客户业务流程中涉及的人员角色、业务活动、业务数据以及他们之间的关系&#xff0c;是用来澄清需求的有效手段。一个典型的业务流程图如下图所示&#xff1a; 在画业务流程图时有哪些注意事项呢&#x…

流程图在线绘制,快速、便捷、高效

Author&#xff1a;AXYZdong 自动化专业 工科男 有一点思考&#xff0c;有一点想法&#xff0c;有一点理性&#xff01; 定个小小目标&#xff0c;努力成为习惯&#xff01;在最美的年华遇见更好的自己&#xff01; CSDNAXYZdong&#xff0c;CSDN首发&#xff0c;AXYZdong原创 …

作为程序员,你一般用什么软件画流程图时序图和状态图等?

作为一名合格的程序员&#xff0c;在需求整理及功能实现的时候&#xff0c;各种流程图是避免不了的&#xff0c;像用例图、时序图、状态图基本上是必备&#xff0c;辅助分析需求及梳理实现思路。 时序图&#xff0c;又称为序列图、循序图&#xff0c;是一种UML交互图。时序图通…

程序员必备绘图工具,流程图、时序图、类图手到擒来!

&#x1f380; 关于博主&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f947; 作者简介&#xff1a; 热衷于知识探索和分享的技术博主。 &#x1f482; csdn主页:&#xff1a;【奇妙之二进制】 ✍️ 微信公众号&#xff1a;【Linux …

如何使用ChatGPT协助Jenkins部署前后端项目Java Vue

探索ChatGPT&#xff0c;协助工作学习创作。公众号「阿杰与AI」一同探讨&#xff0c;一同成长&#xff0c;比他人更进一步。 现在主流方向应该是Git服务器 Jenkins服务器 Docker持续化集成&#xff0c;但是因为Docker有一定的学习成本很多人也就没有增加Docker&#xff0c;我…

分享六款原型设计软件,交流协作更便捷

今天主要是一个盘点集合&#xff0c;针对近些年对于设计软件方面的迅速发展&#xff0c;比较值得关注的设计工具&#xff0c;有需要或感兴趣的就接着往下看吧。 1.Pixso Pixso与下面这些软件相比&#xff0c;算是出现的比较晚的&#xff0c;但是根据我这段时间的实际使用体验&…

心形代码

心形小代码&#xff0c;需要拿走 import math i,j(3,3) while i ! 0:print(" "*6" "" " * (i - 1) "**" " " * abs(i - j) "*" " " * (4 * i1) "*" " " * abs(i - …

Java代码输出心形图案

初学编程的小伙伴肯定有过这样一个想法&#xff0c;就是我能不能利用代码来输出一个特定的图案呢&#xff1f;比如一个爱心&#xff1f;那必然是可以的&#xff0c;代码能实现的功能很多&#xff0c;这只是其中的一小小用法。以下是思路与代码。 方法一 暴力解法&#xff1a; …

马斯克打了个响指,推特50%员工被裁....

前几天Twitter被收购后要裁员的靴子终于落地了&#xff0c;这次裁员注定要记录史册&#xff0c;堪称惊天地泣鬼神。 我们一起看看马斯克给推特员工准备的裁员方案&#xff1a; 不知道大家看完后什么感想&#xff0c;反正洋哥看完后已经为马斯克拍案叫绝了。 **我简单翻译下&a…

马斯克解雇 Twitter 首席工程师,只因不愿被指“过气”!

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 最近这几周&#xff0c;马斯克可能有点“心烦”。 烦要亲自下场测试 Twitter 功能&#xff0c;烦每周要工作 120 个小时&#xff0c;还要烦特斯拉“秘密宏图的第三篇章”……终于&#xff0c;眼看着…

外媒爆料:PS5将在2019年之后发售,是一次真正的更新换代!

关于索尼的下一代新主机传闻近期层出不穷&#xff0c;并且很多消息都表示它将会在2018年底或者2019年发售。不过&#xff0c;根据消息一直很准确的知名媒体 Kotaku 爆料&#xff0c;索尼确实正在筹备全新的主机&#xff0c;但不会在近期发售。在报道中 Kotaku 表示&#xff0c;…

性能评测|影驰RTX4090金属大师系列显卡正式发售!

未来已至,影驰RTX4090金属大师系列显卡正式上线! 前不久,影驰RTX4090 星曜/金属大师系列显卡跨时代亮相,见证新一次历史变革,如今,它来了。 新一代RTX40系列显卡采用NVIDIAAda Lovelace架构,全新TSMC定制4N工艺,专为GPU优化,能够实现高达2倍的性能功耗比飞跃;依靠RTX40系GPU强…

2020亚洲品牌500强榜单发布 ;肯德基中国门店将限时发售植物肉汉堡 | 美通企业日报...

今日看点 2020亚洲品牌500强榜单发布&#xff0c;阿里巴巴、华为、中国工商银行、腾讯、丰田、中国平安、三星、中国建设银行、索尼、中国人寿荣登“2020亚洲品牌500强”Top10。“2020亚洲品牌500强”榜单作为第15届亚洲品牌盛典的重要成果&#xff0c;在“第15届亚洲品牌盛典”…

rgb sw 线主板接口在哪_光有RGB还不够,显卡竖装才更显高大上,酷冷TD500机箱装机...

现在装机,如是要没有RGB元素的话,那根本就不值得去秀。一般来说越高大上的硬件,RGB元素也就越丰富,当然CPU肯定要除外了,毕竟它是一个特殊的存在。也许那一天就像显卡一样,所有的CPU都集成在主板上,也不算是新鲜的事情。 记得当年,为了让主机显得特别,个性一些,就给机…

iNFTnews丨研究报告:国内NFT发售平台盘点及分析

作者 | BoweniNFTnews.com ZhourxiNFTnews.com 自从2021年NFT的发展浪潮席卷国内&#xff0c;大型科技公司纷纷进军NFT领域&#xff0c;如百度、阿里巴巴、腾讯、京东等大厂&#xff0c;在它们的领头下&#xff0c;市场迅速升温&#xff0c;国内NFT数字藏品平台井喷式爆发&…

Dataset:智慧中国杯—全国大数据创新应用大赛七个数据集简介、下载之详细攻略

Dataset&#xff1a;智慧中国杯—全国大数据创新应用大赛七个数据集简介、下载之详细攻略 目录 智慧中国杯—全国大数据创新应用大赛简介 全国大数据创新应用大赛七个数据集下载 智慧中国杯—全国大数据创新应用大赛简介 智慧中国杯”全国大数据创新应用大赛由“算法资格赛”…

必看·2021中国NFT数字藏品报告总结

随着数字藏品&#xff08;NFT&#xff09;市场火热&#xff0c;发行平台如雨后春笋般陆续出现&#xff0c;据扇贝科技不完全统计&#xff0c;2021年国内数字藏品&#xff08;NFT&#xff09;发行平台多达 38家。 按照藏品的发行质量、数量、平台流量、藏品文化内涵、区块链技术…

鲸探发布点评:7月26日发售

今天鲸探将发3款藏品&#xff1a;《黄河黄河九曲十八弯》、《从杰克岛看塞纳河》、《安涅尔浴场》数字藏品。发行价格18&#xff0c;发行数量10000*3。 《黄河九曲十八弯》以文件夹的形式发售&#xff0c;里面包含多款藏品。这个系列的作品是由中国黄河文化经济发展研究会发起&…

CnOpenData中国理财产品数据

中国理财产品数据 一、数据简介 随着居民财富的增加&#xff0c;投资理财成为居民增加收入的重要方式&#xff0c;银行理财产品、保险产品、公募基金成为居民资产配置的主要方向。理财是指以实现财务的保值、增值为目的&#xff0c;对财务&#xff08;财产和债务&#xff09;进…

《达梦数据库运维实战》 发售了

毕业以后一直从事数据库有关的工作&#xff0c;也一直在坚持技术分享&#xff0c;写了很多的博客&#xff0c;但博客有一定的局限性&#xff0c;所以这几年陆续出版了几本书&#xff0c;2019年和2020年写了2本Oracle 数据库有关的书籍&#xff0c;如下: 《Oracle 18c 必须掌握的…