【发布时间】:2019-11-07 19:12:43
【问题描述】:
我已经花了很多天试图解决这个问题,这似乎是一个常见问题。我已经阅读了许多关于同一问题的其他帖子。我已经尝试了所有我能找到的解决方案,但我仍然得到相同的结果 - 无法成功地将我客户的 VendHQ (POS) 连接到我的 WooCommerce 商店(WordPress 5.2.4、PHP 7.2)。我已联系 VendHQ 寻求帮助,但与其他人一样,他们的解决方案不起作用。
我尝试了什么:
按照 VendHQ 的说明创建了我的 WooCommerce REST API 密钥并将它们放入 VendHQ 连接设置中。这给出了初始错误“woocommerce_rest_cannot_view,抱歉,您无法列出资源,401”
按照几次建议,我将以下代码添加到了我的 .htaccess 文件中,但遗憾的是没有解决问题:
# BEGIN WordPress
SetEnvIf Authorization "(.)" HTTP_AUTHORIZATION=$1
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
- 我修改了 apache httpd.conf 文件,多次建议使用 AllowOverride All 而不是默认值 None,但还是没有成功。我将以下代码添加到我的 apache 文件中: "/etc/apache2/conf.d/includes/pre_main_global.conf"
<Directory "/var/www/">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
我对 Apache 和操作指令不是非常了解,因为我知道它有多么危险。然而,这个出现了几次,似乎是直截了当的。更新 .conf 文件并重新启动 Apache 服务器后,我仍然无法建立连接。
- 最后,我在 .htaccess 文件中添加了更多代码:
Header always set Access-Control-Max-Age 1728000
Header always set Access-Control-Allow-Origin: "*"
Header always set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
Header always set Access-Control-Allow-Headers: "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,C$"
Header always set Access-Control-Allow-Credentials true
Header always set Access-Control-Allow-Origin: "https://my_client_shop.com/"
完成所有这些后,我仍然无法连接两个系统,但现在我遇到了一个新错误:
"We are unable to connect your WooCommerce store. Your website does not allow connections with Authorization Headers in the Vend API."
我认为最后的更改会解决此问题。有人看到过授权标头错误的这个问题吗?
我在 Chrome 浏览器中测试了 WC API 密钥:
https://my_client_shop.com/wp-json/wc/v2/system_status?consumer_key=ck_389f08cda9f8a802b366b1de8cb562cba95e462c&consumer_secret=cs_65fcd907905f9d8c64b38a7dd60de4f034526ff2
它显示了 json 文件的详细信息。如果没有密钥,我会再次收到“无法列出 401”错误。所以我假设这些密钥实际上是有效的。
看来我们越来越近了,但我没有想法。
最后,我的客户的商店网站位于多站点上,如果这有影响的话。
所以我希望其他人经历了这一切并且能够真正找到一个有效的解决方案,并且可以分享它:) 或者指出我可能遗漏或错误的地方。非常感谢任何和所有的建议。
【问题讨论】:
-
我也遇到了同样的问题,而且在这个问题上似乎并没有多少。不过,我能够使用您的 htaccess 编辑来使其正常工作(谢谢!)。我唯一更改的另一件事是删除此行: Header add Strict-Transport-Security "max-age=300".
-
嗨布莱斯...我很高兴它对你有用。
标签: wordpress apache woocommerce woocommerce-rest-api