DocumentDB - DELETE 导致 401 错误

DocumentDB - DELETE causes 401 error

当我尝试对 DocumentDB 集合执行 DELETE 动词时,我总是得到 401。 POST for queries/inserts/updates 工作正常,所以我确定我计算授权令牌的代码是正确的。但是我不确定我应该为资源 ID 和资源类型传递什么。

payLoad := LowerCase(Verb) + #10+
           LowerCase(resourceType) + #10+
           LowerCase(resourceId) + #10+
           LowerCase(utc_date) + #10 +
           '' + #10; //instead of the "date" header

对于 POST(有效),我使用

"docs" and "dbs/mydb/mycol/licenses"

对于 DELETE,我使用“_self”属性 的值作为要删除的文档的 url。我尝试了几乎所有我能想到的资源类型和资源 ID 的组合:

docs    dbs/icUoAA==/colls/icUoAKizCgA=/docs
docs    dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA==
docs    dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA==/
docs/icUoAKizCgADAAAAAAAAAA==   dbs/icUoAA==/colls/icUoAKizCgA=/docs
docs/icUoAKizCgADAAAAAAAAAA==   dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA==
etc.

DELETE 但是总是失败并显示 401。我需要使用不同的东西吗?

谢谢!

您可以向 DocumentDB 发出两种请求。一种基于您定义的 "id" 属性,另一种基于内部资源 ID(“_rid”)。当您使用 "id" 时,您需要使用整个 link 来生成授权令牌,因此删除它看起来像

delete
docs
dbs/mydb/colls/mycol/docs/cc0d4caabc714aac976c9d0a2e9243ed
sun, 21 aug 2016 20:00:00
 //newline

如果您使用的是内部资源 ID,那么您只需传入要删除的文档的“_rid”,例如

delete
docs
icuoakizcgadaaaaaaaaaa== //lowercase
sun, 21 aug 2016 20:00:00
 //newline

可能有助于调试这些的一件事是查看随 401 返回的响应正文。它应该包含一条错误消息,告诉您服务器预期的有效负载。