Azure REST API 接受某些文件类型,禁止其他文件类型

问题描述

我正在使用 Azure REST API 将文件一个文件夹复制到另一个文件夹 (https://docs.microsoft.com/en-us/rest/api/storageservices/copy-file)。所有文件文件夹都在同一个帐户中,在同一个文件共享中,由同一个用户帐户通过门户上传。我正在使用 SharedKey auth 并且所有请求的密钥都相同。身份验证部分代码来自 https://github.com/Azure-Samples/storage-dotnet-rest-api-with-auth.git,请求来自该代码,适用于获取/复制请求。

我的问题是尝试复制某些文件会导致 403 Forbidden 响应。这似乎与文件类型有关。文件扩展名不是一个因素。我可以复制 .jpg(和 .jpeg)、.txt 和 .pdf 文件。我无法复制 .exe、.mp4 或 .zip 文件。如果我在我的开发机器上用 .jpg 扩展名重命名 .exe 文件,然后通过门户上传/source 文件夹,尝试通过 API 复制会导致禁止响应。文件大小不是一个因素,我成功复制了实际的 .jpg 文件,这些文件大于问题文件类型。

我找不到任何示例或解释。测试详情如下。

(用字符串替换[myaccount],[some guid]确认非空且guid值有效)

我的文件共享下的目录是:

/目的地

/来源

测试 01:将 th.jpeg 从源复制到目标

请求:

{Method: PUT,RequestUri: 'https://[myaccount].file.core.windows.net/[myshare]/destination/th.jpeg',Version: 1.1,Content: <null>,Headers:
{
  x-ms-date: Wed,27 Jan 2021 15:13:28 GMT
  x-ms-version: 2017-04-17
  x-ms-copy-source: https://[myaccount].file.core.windows.net/[myshare]/source/th.jpeg
  Authorization: SharedKey [myaccount]:18sCuTcbEOA5TLC11hCEH0pkK93Ln/Wk1BSRy0ytEAA=
  Request-Id: [value is same as Failed requests]
}}

回复

{StatusCode: 202,ReasonPhrase: 'Accepted',Content: System.Net.Http.httpconnectionResponseContent,Headers:
{
  ETag: "0x8D8C2D61A12C96B"
  Server: Windows-Azure-File/1.0
  Server: Microsoft-HTTPAPI/2.0
  x-ms-request-id: [some guid]
  x-ms-version: 2017-04-17
  x-ms-copy-id: [some guid]
  x-ms-copy-status: success
  Date: Wed,27 Jan 2021 15:13:28 GMT
  Content-Length: 0
  Last-Modified: Wed,27 Jan 2021 15:13:28 GMT
}}

对以下文件的相同请求有效:

  • 11866.jpg 207.77 KiB
  • pancakes.jpg 6.26 MiB
  • subcontractor.pdf 232.36 KiB
  • text.txt 908 B

测试 02:将 2M.jpg 从源复制到目标

请求:

{Method: PUT,RequestUri: 'https://[myaccount].file.core.windows.net/[myshare]/destination/2M.jpg',27 Jan 2021 15:16:51 GMT
  x-ms-version: 2017-04-17
  x-ms-copy-source: https://[myaccount].file.core.windows.net/[myshare]/source/2M.jpg
  Authorization: SharedKey [myaccount]:QWYuXaE0Djs8k3xtOYMpZ831zX/mVD1Kwx1jgwDK9Oo=
  Request-Id: [value is same as successful requests]
}}

回复

{StatusCode: 403,ReasonPhrase: 'Server Failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.',Headers:
{
  Server: Microsoft-HTTPAPI/2.0
  x-ms-request-id: [some guid]
  Date: Wed,27 Jan 2021 15:16:51 GMT
  Content-Length: 763
  Content-Type: application/xml
}}

对以下文件的相同请求以相同的状态和原因失败:

  • 15M.jpg 15.13 MiB
  • 2M.jpg 2.77 MiB
  • 7M.jpg 7.77 MiB
  • FCVideo.jpg 106.09 MiB
  • FCVideo.mp4 106.09 MiB
  • FluentConference.zip 1020.49 MiB

以上列表中的所有 jpg 文件实际上都是已重命名的 .exe 或 .zip 文件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)