我在向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"
但我总是从邮递员那里得到“禁止”。
我正在使用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"));
}
然后我在邮递员中使用以下内容发送:
,其中 1405123458 =客户编号
8888 =区域ID
D94CF7DDF02CC6D11C7A0B0221F5DE40C11155E01 =散列签名表单代码
contenttype = application / json body = {“urls”:[“*”]}< - 将清除cdn bucket中的所有文件
每次我被禁止回来,我无法解决出错的原因,因为所有参数都是正确的,据我所见。
Leaseweb CDN API文档在以下链接中,但它们都是PHP / Python,我觉得我的哈希方法可能不正确?
http://developer.leaseweb.com/cdn-docs/?php#purge-file(s)-from-a-zone
之前有没有人通过C#使用Leaseweb CDN api?非常感谢任何帮助或指示。
答案 0 :(得分:0)
好的,我设法解决了这个问题。除了哈希签名之外,代码实际上都很好。对于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文档中没有指定,因为它导致我浪费了大量时间来搞清楚....