不支持的 HttpVerb:资源不支持指定的 Http Verb。请求 ID:fa9c21f3-0001-005a-1484-d83478000000



我想通过Angular2将文件存储到Azure Blob数据。这样我就创建了一个名称" mySamplexy"

的存储空间

然后在Blob下创建一个容器"视频"。现在,我想将文件从本地服务器上传到Azure,这样我已经使用URL创建了一个SAS密钥https://mysampleoxy.blob.core.windows.net/?sv=2016-05-31&ss = bfqt&pfqt&-05-29t11:20:04z& spr = https& sig = 4ir2jxigytwhfbyhhy1k4dowagzvzvzvzvzvzvzvznkqbnkqb4cjsa%3D

我已经启用了Blob的CORS,并具有以下详细信息

<CorsRule>
  <AllowedOrigins>*</AllowedOrigins>
  <AllowedMethods>PUT,GET</AllowedMethods>
  <AllowedHeaders>x-ms-meta-data*,x-ms-meta-target,x-ms-meta-source</AllowedHeaders>
  <ExposedHeaders>x-ms-meta-*</ExposedHeaders>
  <MaxAgeInSeconds>200</MaxAgeInSeconds>
</CorsRule>

但是,当我尝试通过服务器上传文件时,以下错误显示在控制台

<?xml version="1.0" encoding="utf-8"?>
<Error><Code>UnsupportedHttpVerb</Code>
<Message>The resource doesn't support specified Http Verb.
RequestId:fa9c21f3-0001-005a-1484-d83478000000
Time:2017-05-29T14:02:25.2296729Z</Message>
</Error>

标题是:

请求URL:https://mysampleoxy.blob.core.windows.net/?sv=2016-05-31&amp;ss = bfqt&pfqt&amp;srt = sco&sp = rwdlacup间; sT = 2017-05-29T11:30:04Z&amp; spr = https&amp; sig = ko5uzkrjrhhvqijg2fpggmgpggmgpggmgpggmgpizivxmhltwnzbabaifnea%3d

请求方法:放

状态代码:405资源不支持指定的http动词。

远程地址:52.172.16.136:443

推荐人政策:没有引用者,当时毕业我的CORS配置没有任何问题。有关此解决方案的任何解决方案都可以帮助我解决这个问题。

谢谢。

您的请求URL不正确。它应包括容器名称和文件名。因此,如果您要上传" file.mov"(示例("视频"容器,则您的请求URL应该是:

https://mysampleoxy.blob.core.windows.net/videos/file.mov?sv=2016-05-31&amp;sss = bfqt&samp; Sco; sco&sco&sp = sco&p.pt = rwdlacup; sp = rwdlacup;-05-30T01:21:04Z&amp; st = 2017-05-29t11:30:04z&amp; spr = https&amp; sig = ko5uzkrjrhhhhvqijg2fpgg2fpggmgpggmgpggmgpggmgpizmhltwnzbaifnea%3D

我也建议更改AllowedHeaders&amp;ExposedHeaders在CORS配置为*中(即允许所有标题返回所有标题(。这些标头的略有不匹配将导致Azure存储的403个错误。因此,您的CORS配置将是:

<CorsRule>
  <AllowedOrigins>*</AllowedOrigins>
  <AllowedMethods>PUT,GET</AllowedMethods>
  <AllowedHeaders>*</AllowedHeaders>
  <ExposedHeaders>*</ExposedHeaders>
  <MaxAgeInSeconds>200</MaxAgeInSeconds>
</CorsRule>

我试图使用帖子,而 put 是必要的。

工作代码:

const url = `${baseURL}/${containerName}/${file.name}?${Container_SAS}`;
      const response = await fetch(url,
                {
                    method: 'PUT',
                    headers: {
                        'x-ms-blob-type': 'BlockBlob',
                    },
                    body: file
                });
      console.log('response', response.statusText, response.status)

最新更新