【问题标题】:Azure Queue Rest API "Resource Not Found 404"Azure 队列休息 API“找不到资源 404”
【发布时间】:2019-03-17 02:36:09
【问题描述】:

在 Angular 应用程序上,我试图使用以下 URL 格式查看 Azure 上队列中的消息(上面有多条消息):https://myaccount.queue.core.windows.net/myqueue/messages?peekonly=true 来自 Peek Messages | Microsoft Docs

我的请求:(_http 是 HttpClient 的变量名)

return this._http.get('https://***.queue.core.windows.net/***/messages?peekonly=true')

它返回status: 404, statusText: "The specified resource does not exist." 我已经三次检查了我的请求 URL 并确认 CORS 已启用。我在这里错过了什么?

【问题讨论】:

    标签: angular typescript azure azure-storage azure-queues


    【解决方案1】:

    Azure 存储返回 404 Not Found,因为存储服务默认是私有的。未经授权的普通 URL 无法访问私有资源。

    我建议您使用Shared access signature 来授权您的请求。

    进入门户上的存储帐户,单击共享访问签名刀片以生成 sas 令牌。 Peek 消息需要(队列/对象/读取)作为最小权限。见permission by operation

    然后将生成的 SAS 令牌附加到您的 url,注意您需要将 ? 替换为 &,因为它是 url 中的第二个查询参数。

    【讨论】:

    • 非常感谢@JerryLiu。我完成了该过程,启用了所有权限,并将 sas 令牌附加到带有 & 的 url 的末尾。我有一个403 (This request is not authorized to perform this operation.)。然后我尝试了文档中的其他一些基本请求,并得到了同样的错误。有什么想法吗?
    • @kg123 你试过直接在浏览器中使用sas的url吗?两个潜在原因 1.令牌可能已过期。 2. url编码问题
    • 我已经在浏览器中尝试过了,它也有同样的错误。我尝试了一个新密钥来确认过期不是问题。此外,我的代码中已经成功调用了与我尝试访问的队列相同的存储帐户中的 blob。所以,我不认为编码会是一个问题。
    • 忘了说@JerryLiu
    • 解决方案是将 SAS 令牌放在消息操作选项之前,例如 https://myaccount.queue.core.windows.net/myqueue/messages?SASTOKEN&peekonly=true。 @JerryLiu
    猜你喜欢
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2016-09-07
    • 2013-06-21
    • 2020-01-11
    相关资源
    最近更新 更多