Amazon s3 FU在版本4签名中无法上载分块文件

Amazon s3 FU在版本4签名中无法上载分块文件,amazon-s3,cors,fine-uploader,Amazon S3,Cors,Fine Uploader,我已经成功升级到FU版本5.41,并认为我已经完成了。我曾经并将继续能够上传到法兰克福。唯一的问题是,我使用的是1MB文件,当我尝试一个更大的文件时,它失败了,错误是“启动上传请求时出现问题” 我可以确认,如果我在chuncked文件上传递版本2签名,所有内容保持不变,它将正确上载,但更改为版本4,但不会。是的,我在支持版本2和版本4的S3上做了这个示例。(否则就无法证明这一点) 我使用S3上传与php服务器端。 我正在传递正确的区域、版本号和预期的存储桶等信息 在PHP示例代码中,我注意到了预

我已经成功升级到FU版本5.41,并认为我已经完成了。我曾经并将继续能够上传到法兰克福。唯一的问题是,我使用的是1MB文件,当我尝试一个更大的文件时,它失败了,错误是“启动上传请求时出现问题” 我可以确认,如果我在chuncked文件上传递版本2签名,所有内容保持不变,它将正确上载,但更改为版本4,但不会。是的,我在支持版本2和版本4的S3上做了这个示例。(否则就无法证明这一点)

我使用S3上传与php服务器端。 我正在传递正确的区域、版本号和预期的存储桶等信息

在PHP示例代码中,我注意到了预期的s3主机名,在changelog文档中,我无法将其视为支持版本4签名所需的一项要求,不管我是否添加了此项。。。只是为了确定这是什么?例如,bucketname.s3.amazonaws.com是否正确

有什么想法吗,我哪里出错了,谢谢 你需要我提供更多的信息吗?下面是从失败的http请求复制的,我希望这是您想要的

Request URL:https://videodesktv-ingest-syd.s3.amazonaws.com/console/2_mumford_lover_of_the_light.mp4?uploads
Request Method:OPTIONS
Status Code:403 Forbidden
Remote Address:54.231.252.151:443
Response Headers
view source
Content-Type:application/xml
Date:Mon, 14 Dec 2015 04:29:06 GMT
Server:AmazonS3
Transfer-Encoding:chunked
x-amz-id-2:0dkXc0/yOnzrI6T9cClx6R6SQI8ixfs99rS5zX0nuCorHyVNh7CEWzbuNnay5KEmhQD1816MdRQ=
x-amz-request-id:D4EDCC40832B34AC
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:authorization, content-type, x-amz-acl, x-amz-content-sha256, x-amz-date, x-amz-meta-qqfilename
Access-Control-Request-Method:POST
Connection:keep-alive
Host:videodesktv-ingest-syd.s3.amazonaws.com
Origin:https://videodesk.tv
Referer:https://videodesk.tv/1/console
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36

根据您问题中发布的HTTP请求详细信息,选项请求无法发送到您的S3存储桶。在CORS的上下文中,这被称为“飞行前”请求,在发送基础请求之前由浏览器作为安全检查发送(在本例中,是将文件分块上传到S3所需的一系列请求中的第一个请求)

对此预飞行的响应是403,这表示您的S3存储桶没有正确的CORS配置。请密切注意飞行前请求中的以下标题:

Access-Control-Request-Headers:authorization, content-type, x-amz-acl, x-amz-content-sha256, x-amz-date, x-amz-meta-qqfilename

Access-Control-Request-Method:POST
您的存储桶的CORS设置必须配置为接受POST方法和“访问控制请求标头”标头中列出的标头


此外,请确保还列出了“”的来源。

除了用户现有的CORS配置之外,请注意,您需要添加x-amz-content-sha256

哪个特定请求失败?我特别询问http请求。哪一个失败了?它是对签名服务器的请求,是对S3的POST,还是对S3的第一个PUT?对于失败的请求,响应状态和主体是什么?当前问题尚不清楚…最好编辑您的答案,以包含有关确切失败HTTP请求的信息,以及该请求的状态代码和响应负载。另外,如果问题似乎与签名请求有关,那么请包含示例PHP文件中的头信息,您已调整该文件以适应您的环境。感谢您明确指出,它现在正在工作。我丢失了列为x-amz-content-sha256的版本4签名的新标题-这就是版本2请求工作的原因。我可以建议将此添加到文档更改日志说明ads中吗?它没有提到,而且是绝对必需的。我刚刚更新了,以便在CORS部分包含此标题。我还想问一下,在您的PHP示例中,为什么会在似乎不需要时提及此标题,只要预期的bucket是正确的$expectedHostName=$_ENV['S3_HOST_NAME'];//仅v4。