在 POSTMAN 中使用 LeaseWeb CDN API 清除 LeaseWeb CDN

Purge LeaseWeb CDN using LeaseWeb CDN API in POSTMAN

我无法向 LeaseWeb CDN 发送清除请求 API。困难在于 LeaswebExamples 在 PHP/Python 中并且在 Post man 中没有关于如何做的任何信息。 最接近的卷曲示例:

curl -X POST -d '{"urls":["/path/to/file.jpg"]}' "https://api.leasewebcdn.com/content/purge/1234567890/123/1440593540/4a69f766bc48b1ed3d025339313196c388de8da5"

但我总是从 Postman 那里得到 "forbidden"。

我正在使用 secretKey + timeStamp + authenticationURL 创建一个 sha1 散列;在 C# 中:

        var authenticationURL = "https://api.leasewebcdn/content/purge";
        var sha1 = new SHA1Managed();
        var timeStamp = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;

        var sha1Input = secretKey + timeStamp + authenticationURL;

        var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(sha1Input));
        var sb = new StringBuilder(hash.Length);

        foreach (byte b in hash)
        {
            // can be "x2" if you want lowercase
            sb.Append(b.ToString("X2"));
        }

然后我在 Postman 中使用它来发送以下内容:

https://api.leasewebcdn.com/content/purge/1405123458/8888/1476699042/D94CF7DDF02CC6D11C7A0B0221F5DE40C11155E01

在哪里 1405123458 = 客户数

8888 = 区域编号

D94CF7DDF02CC6D11C7A0B0221F5DE40C11155E01 = 哈希签名形式代码

内容类型=application/json body = {"urls": ["*"]} <- 将清除 cdn bucket

中的所有文件

每次我都被禁止返回并且我无法找出问题所在,因为据我所知,所有参数都是正确的。

Leaseweb CDN API 文档在下面 link,但它们都在 PHP /Python,我觉得我的哈希方法可能不对吗?

http://developer.leaseweb.com/cdn-docs/?php#purge-file(s)-from-a-zone

有没有人以前通过 C# 使用过 Leaseweb CDN api?如有任何帮助或指点,我们将不胜感激。

好的,我设法解决了这个问题。除了哈希签名之外,代码实际上一切都很好。对于 LeaseWeb,哈希签名必须始终为小写。 这可以通过将上面的代码调整 1(一个!!)字符来实现:

    var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(sha1Input));
    var sb = new StringBuilder(hash.Length);

    foreach (byte b in hash)
    {
        // this must be lowercase x2 (not X2) to produce a lowercase hash signature.
        sb.Append(b.ToString("x2"));
    }

令我惊讶的是,LeaseWeb CDN 文档中并未指定这一点,因为这让我浪费了很多时间来弄清楚它....