Woocommerce 正在对授权端点进行编码
Posted
技术标签:
【中文标题】Woocommerce 正在对授权端点进行编码【英文标题】:Woocommerce is encoding the authorization endpoint 【发布时间】:2021-04-22 21:13:42 【问题描述】:我在 woocommerce 身份验证方面遇到了一个奇怪的问题。当我尝试从 URL - /wc-auth/v1/authorize?app_name=example.com
验证我的 vue 应用程序时,它会重定向到 /wc-auth%2Fv1/access_granted/
并给出 404 错误。
注意 URL 中的 “%2F”。如果我在地址栏中将 "%2F" 编辑为 /,它可以正常工作。我不知道我在这里做错了什么。我猜 woocommerce/wordpress 正在对 url 进行编码。任何解决此问题的建议都会非常有帮助。
【问题讨论】:
【参考方案1】:我能够在几个使用 WordPress 多语言 (WPML) 插件的网站中看到这个问题。受影响的网站运行的版本 > 4.4.6。
WPML 开发人员已经意识到了这个问题,并且他们有一张票,截至发帖时仍然可以解决这个问题 (https://wpml.org/errata/endpoints-containing-slashes-are-incorrectly-encoded/)。
从那张票:
症状
使用 WooCommerce 扩展程序或其他插件或主题的用户使用 wc-auth/v1 等端点可能会看到这些端点被错误地 url 编码为 wc-auth%2Fv1 之类的东西。
这可能会导致与最新版本 WPML 中的那些插件或主题的兼容性问题。
解决方法
我们的开发人员正在努力解决此问题。作为临时解决方案,请尝试以下步骤:
完全备份您的网站。
确保您的所有插件都是最新的。 编辑文件 wp-content/plugins/sitepress-multilingual-cms/classes/url-handling/class-wpml-endpoints-support.php 并修改第 95 行
发件人:
return urlencode( $endpoint_translation );
收件人:
return implode('/', array_map('urlencode', explode('/', $endpoint_translation)));
此更改不应影响不包含斜线的端点。
【讨论】:
以上是关于Woocommerce 正在对授权端点进行编码的主要内容,如果未能解决你的问题,请参考以下文章
Woocommerce 如何在我的帐户页面上重定向自定义端点