简体   繁体   English

aws-sdk s3 上传 CORS 错误由 CacheControl 选项引起

[英]Aws-sdk s3 upload CORS error cause by CacheControl Option

My code is looks like this and when我的代码看起来像这样,什么时候

import { FileUpload } from "../types/scalars/Upload.scalar";

 new S3.ManagedUpload({
        params: {
            ACL: "public-read",
            Bucket: process.env.AWS_BUCKETNAME || "",
            Body: upload.createReadStream(),
            Key: filename || upload.filename,
            CacheControl: "max-age=604800,public,immutable",
        },
        // tags,
    }).promise();

If I upload this with the CacheControl option, upload works fine.如果我使用 CacheControl 选项上传它,上传工作正常。

But when I load it on the client side I get a CORS error.但是当我在客户端加载它时,出现 CORS 错误。

If I remove CachControl, obviously the CORS error doesn't come up.如果我删除 CachControl,显然不会出现 CORS 错误。

My Bucket has CORS-Policy like this我的桶有这样的 CORS-Policy

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "POST"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

Headers with CacheControl Param带有 CacheControl 参数的标头

在此处输入图像描述

Headers without CachControl Param没有 CachControl 参数的标头

在此处输入图像描述

With CacheControl param, My Allow headers are gone.有了 CacheControl 参数,My Allow 标头就消失了。 Why is that?这是为什么?

I found some documents in herehttps://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9我在这里找到了一些文件https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

I had same problem.我有同样的问题。
Did you set bucket policy in Amazon S3 actions?您是否在 Amazon S3 操作中设置了存储桶策略?
https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html
It worked by setting policy in my project.它通过在我的项目中设置策略来工作。

And you can check if settings works by using curl.您可以使用 curl 检查设置是否有效。
The below command is check if POST request can access to a bucket.以下命令检查 POST 请求是否可以访问存储桶。

curl -i https://your-bucket-name.s3.your-bucket-region.amazonaws.com/index.html -H "Access-Control-Request-Method: POST" -X OPTIONS -H "Origin: http://localhost:3000"

Check this link out.检查此链接。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-configure-cors/ https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-configure-cors/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 s3 文件上传 - 不适用于视频 - React/Meteor - aws-sdk - s3 file upload - not working for video - React/Meteor - aws-sdk NodeJs AWS-SDK s3.upload 上传 function 没有按预期抛出错误 - NodeJs AWS-SDK s3.upload upload function not throwing error as expected 使用 AWS SDK NoSuchBucket 错误将文件上传到 S3 Bucket - Upload file to S3 Bucket with AWS SDK NoSuchBucket error S3 为使用 aws-sdk v3 预签名的 PutObject 命令 url 提供 SignatureDoesNotMatch 错误 - S3 gives SignatureDoesNotMatch error for PutObject command pre-signed url using aws-sdk v3 使用nodejs aws sdk 将生成的pdf上传到AWS S3 - Upload pdf generated to AWS S3 using nodejs aws sdk Errors::SignatureDoesNotMatch,用于在回形针 3.0.1 和 rails 3.2 上支持 S3 的 AWS-SDK gem - Errors::SignatureDoesNotMatch, AWS-SDK gem for S3 support on paperclip 3.0.1 and rails 3.2 aws-sdk S3:使用 listObjectsV2 列出所有键的最佳方式 - aws-sdk S3: best way to list all keys with listObjectsV2 aws sdk 使用 node.js 分段上传到 s3 - aws sdk Multipart Upload to s3 with node.js AWS:无法通过 SDK 将文件上传到私有 S3 - AWS: Can't upload a file to private S3 through SDK aws ruby sdk S3 错误:`Aws::S3::Errors::AccessControlListNotSupported` - Error with aws ruby sdk S3: `Aws::S3::Errors::AccessControlListNotSupported`
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM