【发布时间】: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)
标签: php wordpress woocommerce cors