在 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 中使用它来发送以下内容:
在哪里
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 文档中并未指定这一点,因为这让我浪费了很多时间来弄清楚它....
我无法向 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 中使用它来发送以下内容:
在哪里 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 文档中并未指定这一点,因为这让我浪费了很多时间来弄清楚它....