UnsupportedHttpVerb :资源不支持指定的 Http Verb。 RequestId:fa9c21f3-0001-005a-1484-d83478000000
UnsupportedHttpVerb : The resource doesn't support specified Http Verb. RequestId:fa9c21f3-0001-005a-1484-d83478000000
我想通过 angular2 将文件存储到 azure blob 数据中。这样我就创建了一个名为 "mysampleoxy"
的存储
然后在 blob 下创建了一个容器 "videos"。
现在我想将文件从我的本地服务器上传到 Azure,这样我就用 url 创建了一个 sas 密钥
https://mysampleoxy.blob.core.windows.net/?sv=2016-05-31&ss=bfqt&srt=sco&sp=rwdlacup&se=2017-05-30T04:20:04Z&st=2017-05-29T11:20:04Z&spr=https&sig=4Ir2JxigytwHfbyhhY1K4dOWAgZvvZnEzbNKqB4cjSA%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>
和 Headers 是:
请求方式:
放
状态码:
405 资源不支持指定的 Http 动词。
远程地址:
52.172.16.136:443
推荐人政策:
no-referrer-when-downgrade
我的 cors 配置没有任何问题。任何与此相关的解决方案都可以帮助我解决这个问题。
谢谢。
您的请求 URL 不正确。它应该包括容器名称和文件名称。因此,如果您在 "videos" 容器下上传 "file.mov"(示例),您的请求 URL 应该是:
我还建议将 CORS 配置中的 AllowedHeaders
& ExposedHeaders
更改为 *
(即允许所有 headers & return 所有 headers).这些 headers 中的轻微不匹配将导致 Azure 存储出现 403 错误。所以您的 CORS 配置将是:
<CorsRule>
<AllowedOrigins>*</AllowedOrigins>
<AllowedMethods>PUT,GET</AllowedMethods>
<AllowedHeaders>*</AllowedHeaders>
<ExposedHeaders>*</ExposedHeaders>
<MaxAgeInSeconds>200</MaxAgeInSeconds>
</CorsRule>
我试图使用 POST,而 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)
我想通过 angular2 将文件存储到 azure blob 数据中。这样我就创建了一个名为 "mysampleoxy"
的存储然后在 blob 下创建了一个容器 "videos"。 现在我想将文件从我的本地服务器上传到 Azure,这样我就用 url 创建了一个 sas 密钥 https://mysampleoxy.blob.core.windows.net/?sv=2016-05-31&ss=bfqt&srt=sco&sp=rwdlacup&se=2017-05-30T04:20:04Z&st=2017-05-29T11:20:04Z&spr=https&sig=4Ir2JxigytwHfbyhhY1K4dOWAgZvvZnEzbNKqB4cjSA%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>
和 Headers 是:
请求方式: 放
状态码: 405 资源不支持指定的 Http 动词。
远程地址: 52.172.16.136:443
推荐人政策: no-referrer-when-downgrade 我的 cors 配置没有任何问题。任何与此相关的解决方案都可以帮助我解决这个问题。
谢谢。
您的请求 URL 不正确。它应该包括容器名称和文件名称。因此,如果您在 "videos" 容器下上传 "file.mov"(示例),您的请求 URL 应该是:
我还建议将 CORS 配置中的 AllowedHeaders
& ExposedHeaders
更改为 *
(即允许所有 headers & return 所有 headers).这些 headers 中的轻微不匹配将导致 Azure 存储出现 403 错误。所以您的 CORS 配置将是:
<CorsRule>
<AllowedOrigins>*</AllowedOrigins>
<AllowedMethods>PUT,GET</AllowedMethods>
<AllowedHeaders>*</AllowedHeaders>
<ExposedHeaders>*</ExposedHeaders>
<MaxAgeInSeconds>200</MaxAgeInSeconds>
</CorsRule>
我试图使用 POST,而 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)