访问控制检查S3直接上传的Safari

时间:2017-08-24 12:13:57

标签: javascript node.js ajax amazon-s3 aws-sdk

Safari 10.1.2

尝试使用Node aws-sdk使用签名请求将PDF文件上传到S3时出现问题。间歇性地发生这种情况并且谷歌搜索称这是一个CORS问题,但它在90%的情况下运行良好!拉出我的声音吧!

我在Firefox上注意到,如果文件超过500Kb,就会发生这个问题。我解决了这个问题,但我仍然在Safari上遇到这个问题。

客户端

    // https://gist.github.com/guumaster/9f18204aca2bd6c71a24
    $.ajax({
        type: 'PUT',
        url: signedRequest,
        // Content type must much with the parameter you signed your URL with
        contentType: file.type,
        // this flag is important, if not set, it will try to send data as a form
        processData: false,
        // the actual file is sent raw
        data: file,
        success: function (data, textStatus, request) {
            addToSupportingDocsURLDO(annexureFilename, reference, url, callback);
        },
        error: function (err, textStatus, request) {
            _errorCallback('Could not upload file: ' + file.name + ' Please decrease the size of your file or try again later.');
            // TODO: send support@judgeit.com.au email with error
        }
    });

错误

  

由于访问控制检查,XMLHttpRequest无法加载https://sofassets.s3-ap-southeast-2.amazonaws.com/597725898b90e600118f9c9d/599eb7843301240011281ecb/Annexure-D.pdf?AWSAccessKeyId=ACCESSKEYID&Content-Type=application%2Fpdf&Expires=1503574043&Signature=SIGNATURE&x-amz-acl=public-read

1 个答案:

答案 0 :(得分:0)

如果你没有把它排除在外,或者有人像我一样落在这里,我们遇到了同样的问题,我仍然无法相信这是问题,但......我们将按钮从<button type="submit"更改为<button type="button"解决了它。显然Apple决定提交按钮不应该提交数据......