第三方程序需要从我们的 CDN 访问静态文件。问题是,他们不是通过 GET 获取这些文件,而是通过 POST 发出这个请求。
在测试这个POST => cdn.company.com/somefile
时,我得到 -
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>MethodNotAllowed</Code>
<Message>The specified method is not allowed against this resource.</Message>
<Method>POST</Method>
<ResourceType>OBJECT</ResourceType>
</Error>
CloudFront 行为设置为支持所有方法 -
并且 CORS 配置包括 POST 方法-
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>2592000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
不知道还需要做什么。我的怀疑是 S3(正确地)假设 POST 正在尝试将信息添加到存储桶,它应该只返回路径中的文件。Cloudfront 到 s3 有可能吗?我是否需要将请求转发给将下载文件的 lambda?