【问题标题】:jQuery, HTTPS and WooCommerce API: Error 401jQuery、HTTPS 和 WooCommerce API:错误 401
【发布时间】:2016-10-05 10:13:55
【问题描述】:

我正在尝试使用基于 HTTPS 的基本身份验证通过 jQuery 从同源 (localhost) 调用 WooCommerce API。服务器是 Windows 上的 XAMPP。我正在使用自签名证书(CN=localhost)。当我访问网站的其余部分时,证书不会发出任何警告。我尝试将证书添加为受信任的根证书颁发机构。我什至允许 chrome://flags/#allow-insecure-localhost (即使证书有效)。我不断收到“401 Unauthorized”。

var username = "ck_????????????????????????????????????????";
var password = "cs_????????????????????????????????????????";
var up = username + ":" + password;
var authHeader = "Basic " + btoa(username + ":" + password);

WooClient.prototype.getProducts = function () {
    return $.ajax({
        url: "/myshop/wp-json/wc/v1/products",
        type: "get",
        dataType: "json",
        xhrFields: {
            withCredentials: true
        },
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Authorization", authHeader);
            return true;
        }
    }).then(function (data) {
        return data;
    });
};

使用 Advanced Rest Client 执行的相同请求返回“200 OK”并在正文中返回所需的结果。

【问题讨论】:

  • 嗯,我刚刚注意到使用 Edge 一切都很好。

标签: jquery wordpress ssl woocommerce


【解决方案1】:

我有同样的问题。还注意到它在 Edge 中有效,但在 Chrome 中无效。在我尝试将配置剥离到最低限度后,它突然出于某种原因开始工作。在进一步挖掘之后,每当您登录到同一个站点时,似乎都会发生这种情况。

$.ajax({
  url: "/wp-json/wc/v1/products",
  beforeSend: function(xhr) { 
    xhr.setRequestHeader("Authorization", "Basic " +btoa(username+':'+password)); 
    return true; 
  }
});

当然,将 API 密钥暴露给浏览器是一个非常糟糕的主意,如果您将其用于重要的事情:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2018-01-10
    • 2017-07-16
    • 2017-08-11
    • 2018-04-01
    相关资源
    最近更新 更多