如何在 Woocommerce API 中添加 CORS 标头
Posted
技术标签:
【中文标题】如何在 Woocommerce API 中添加 CORS 标头【英文标题】:How to add CORS Headers in Woocommerce API 【发布时间】:2019-12-20 06:53:06 【问题描述】:我正在尝试解决 Ajax 请求和 woocommerce API 的问题。实际上,当我请求 WC 时,缺少 CORS 标头。这是错误:
从源“https://www.client.com”访问“https://mywebsite.com/woocommerce/?wc-api=software-api&request=check&email=email&license_key=license&product_id=product”处的 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。
我已经将此代码添加到我的主题 functions.php 文件中:
function add_cors_http_header()
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS, READ');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token,authorization,XMLHttpRequest, user-agent, accept, x-requested-with');
header("Access-Control-Allow-Credentials: true");
if ( 'OPTIONS' == $_SERVER['REQUEST_METHOD'] )
status_header(200);
exit();
add_action('init','add_cors_http_header');
错误仍然存在。我不明白我应该将代码添加到我的响应中的位置。
编辑
这是失败的请求(来自 Chrome 开发工具):
编辑 2
也尝试在我的 .htaccess 中添加 Header set Access-Control-Allow-Origin "*"
,但仍然无法正常工作。
编辑 3
我尝试直接从 plesk 面板添加 Header 指令。它似乎会影响错误(YAY !!!)。当我添加Access-Control-Allow-Origin: "*"
时,现在的错误是:
【问题讨论】:
您是否检查了标头是否由您的网络服务器或代理服务器设置?我想在那种情况下你不能轻易地覆盖它们...... 不,我没有任何我可以阅读的文档吗?我对这部分真的很失望 我发现enable-cors.org/server.html 是一个很好的起点 - 如果网络服务器在您的控制之下。否则,您可能需要与您的托管公司联系。 响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?它是对 CORS preflight OPTIONS 请求的响应吗? @user127091 感谢提供链接,我会更深入地检查并尝试联系 OVH (Hoster) 【参考方案1】:根据@user127091 的评论,我通过将标头直接添加到服务器配置(在我的情况下为 Plesk)解决了这个问题。
【讨论】:
请详细说明如何将哪一行添加到哪个文件中?以上是关于如何在 Woocommerce API 中添加 CORS 标头的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 woocommerce rest api 在 json 文件中发布 line_items?
是否可以添加使用 WooCommerce 授权的新 API 端点?