xml - 使用括号设置 Azure Blob 索引标记 - 在浏览器中有效,但在 REST API 中无效

标签 xml azure http blob storage

我一直在尝试设置一些 blob 标签并收到一个可怕的错误:

Response: HTTP/1.1 400 The tags specified are invalid. It contains characters that are not permitted.

我可以在容器浏览器中设置具有相同值的标签,没有任何问题,但通过 REST api 它总是因括号而失败,我尝试了多种方式编码,但成功的唯一方法是省略专利(其中我目前正在做)。

成功的有效负载:

<Tags>
    <TagSet>
        <Tag>
            <Key>FileID</Key>
            <Value>307145362</Value>
        </Tag>
        <Tag>
            <Key>FileName</Key>
            <Value>/omit/gkcs2022-11-15 14.49.12.log</Value>
        </Tag>
         <Tag>
            <Key>FileType</Key>
            <Value>GKCS Log File</Value>
        </Tag>
         <Tag>
            <Key>DeviceID</Key>
            <Value>151283</Value>
        </Tag>
         <Tag>
            <Key>Timestamp</Key>
            <Value>2023-01-20T144920.192Z</Value>
        </Tag>
         <Tag>
            <Key>DOWNLOADEDTO_GBMSVINTELLIFS</Key>
            <Value>False</Value>
        </Tag>
    </TagSet>
</Tags>

负载失败:

原始:

<Tags>
    <TagSet>
        <Tag>
            <Key>FileID</Key>
            <Value>307145362</Value>
        </Tag>
        <Tag>
            <Key>FileName</Key>
            <Value>/omitted/gkcs(2022-11-15 14.49.12).log</Value>
        </Tag>
         <Tag>
            <Key>FileType</Key>
            <Value>GKCS Log File</Value>
        </Tag>
         <Tag>
            <Key>DeviceID</Key>
            <Value>151283</Value>
        </Tag>
         <Tag>
            <Key>Timestamp</Key>
            <Value>2023-01-20T144920.192Z</Value>
        </Tag>
         <Tag>
            <Key>DOWNLOADEDTO_GBMSVINTELLIFS</Key>
            <Value>False</Value>
        </Tag>
    </TagSet>
</Tags>

网址编码:

<Tags>
    <TagSet>
        <Tag>
            <Key>FileID</Key>
            <Value>307145362</Value>
        </Tag>
        <Tag>
            <Key>FileName</Key>
            <Value>/omit/gkcs%282022-11-15 14.49.12%29.log</Value>
        </Tag>
         <Tag>
            <Key>FileType</Key>
            <Value>GKCS Log File</Value>
        </Tag>
         <Tag>
            <Key>DeviceID</Key>
            <Value>151283</Value>
        </Tag>
         <Tag>
            <Key>Timestamp</Key>
            <Value>2023-01-20T144920.192Z</Value>
        </Tag>
         <Tag>
            <Key>DOWNLOADEDTO_GBMSVINTELLIFS</Key>
            <Value>False</Value>
        </Tag>
    </TagSet>
</Tags>

转义字符:

<Tags>
    <TagSet>
        <Tag>
            <Key>FileID</Key>
            <Value>307145362</Value>
        </Tag>
        <Tag>
            <Key>FileName</Key>
            <Value>/omit/gkcs\(2022-11-15 14.49.12\(.log</Value>
        </Tag>
         <Tag>
            <Key>FileType</Key>
            <Value>GKCS Log File</Value>
        </Tag>
         <Tag>
            <Key>DeviceID</Key>
            <Value>151283</Value>
        </Tag>
         <Tag>
            <Key>Timestamp</Key>
            <Value>2023-01-20T144920.192Z</Value>
        </Tag>
         <Tag>
            <Key>DOWNLOADEDTO_GBMSVINTELLIFS</Key>
            <Value>False</Value>
        </Tag>
    </TagSet>
</Tags>

最佳答案

根据 Azure Storage documentation ,只有以下字符可以用于有效的标签键和值:

  • Lowercase and uppercase letters (a-z, A-Z)
  • Digits (0-9)
  • A space ( )
  • Plus (+), minus (-), period (.), solidus (/), colon (:), equals (=), and underscore (_)

遗憾的是,Set Blob Tags REST API 请求当前不支持括号字符。

关于xml - 使用括号设置 Azure Blob 索引标记 - 在浏览器中有效,但在 REST API 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75187698/

相关文章:

.net - 如何将 ExpandoObject 序列化为属性/值对?

node.js - Node js 应用程序洞察采样,对除错误/异常之外的所有内容进行采样

python - 在 Django 中发布表单时无法保存数据

java - 请求参数的存在应评估为真

android - 如何更改选定的 BottomNavigationView 图标大小

xml - Vim 中的模式感知 XML 编辑

java - 进入主屏幕后如何重新启动应用程序?

azure - 使用新的 Pulumi azuread 模块出现身份验证错误

azure - 使用函数中的值设置 AzApiManagementPolicy

http - 无法在 if..else 条件 : "undefined err go" 中获取变量数据