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 当前端点页面标题

如何获得特定WooCommerce端点的永久链接?

WooCommerce 插件模板覆盖

Woocommerce 如何在我的帐户页面上重定向自定义端点

Woocommerce 如何从模板重定向挂钩中排除 myaccount 的子页面(端点)?

在保护评论表单和相关 API 端点时,是不是应该在浏览器、服务器或两者中对输入进行清理、验证和编码?