Woocommerce 正在对授权端点进行编码

Woocommerce is encoding the authorization endpoint

我在使用 woocommerce 身份验证时遇到了一个奇怪的问题。当我尝试从 URL - /wc-auth/v1/authorize?app_name=example.com 验证我的 vue 应用程序时,它会重定向到 /wc-auth%2Fv1/access_granted/ 并给出 404 错误。

通知 “%2F” URL。如果我在地址栏中将 "%2F" 编辑为 /,它可以正常工作。我不知道我在这里做错了什么。我猜 woocommerce/wordpress 正在编码 url。任何解决此问题的建议都会非常有帮助。

我在几个使用 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)));

此更改不应影响不包含斜杠的端点。