AWS S3 - CORS选项在DELETE w/VersionId期间预检投掷400错误请求

 娜一刻冻杰幸福 发布于 2023-01-19 22:55

我正在使用对象的Key和删除标记的VersionID尝试删除标记的deleteObject请求.

由于CORS,浏览器(Chrome 34.0.1847.11)向以下网址发送OPTIONS预检请求:http://bucket.s3-us-west-2.amazonaws.com/Folder/File.ext?versionId = 0123456789

Amazon S3使用以下XML主体响应400(错误请求):



    InvalidArgument
    This operation does not accept a version-id.
    0123456789
    versionId
    12345
    1122334455

因为XMLHttpRequest返回400(错误请求),所以DELETE请求永远不会被执行.我的印象是AWS没有正确处理选项请求.如果有解决方法,那就太棒了!

我当前的CORS策略是:



    
        *
        HEAD
        GET
        PUT
        POST
        DELETE
        *
    

仅供参考:我正在使用AWS SDK for JS 2.0.0-rc10

先感谢您.

编辑1:我尝试添加,OPTIONS但亚马逊返回Found unsupported HTTP method in CORS config. Unsupported method is OPTIONS

编辑2:

选项请求/响应标头:

Remote Address: *********:443
Request URL: https://bucket.s3-us-west-2.amazonaws.com/path/to/file_name?versionId=0123456789
Request Method: OPTIONS
Status Code: 400 Bad Request

Request Headers
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Access-Control-Request-Headers: x-amz-user-agent, x-amz-security-token, x-amz-date, authorization, content-type
Access-Control-Request-Method: DELETE
Cache-Control: no-cache
Connection: keep-alive
DNT: 1
Host: bucket.s3-us-west-2.amazonaws.com
Origin: https://website.com
Pragma: no-cache
Referer: https://website.com/
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.60 Safari/537.36
Query String Parameters
versionId: 0123456789

Response Headers
Access-Control-Allow-Headers: x-amz-user-agent, x-amz-security-token, x-amz-date, authorization, content-type
Access-Control-Allow-Methods: HEAD, GET, PUT, POST, DELETE
Access-Control-Allow-Origin: *
Connection: close
Content-Type: application/xml
Date: Tue, 18 Mar 2014 23:59:15 GMT
Server: AmazonS3
Transfer-Encoding: chunked
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
x-amz-id-2: *************************
x-amz-request-id: ***********

由于OPTIONS失败,删除请求实际上不会发生.

1 个回答
  • 我刚遇到这个问题.它只发生在Chrome上.这太棒了.

    解决方案是将以下内容添加到<CORSRule>AWS中的相关配置中:

    <AllowedHeader>*</AllowedHeader>
    

    这使得Chrome不会发送OPTIONS请求,一切都应该正常运行.

    2023-01-19 23:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有