- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过 ajax 请求将文件放入 S3,大约 50% 的时间我会收到 ERR_CONNECTION_RESET 错误。
我知道请求已正确签名 - 有什么想法可能导致此情况吗?同样,这是我从多个位置和机器上看到的间歇性问题。
这是我用来将文件放入 S3 的相关 CoffeeScript 代码。它源自 Micah Roberson 和 Rok Krulec 的工作 http://micahroberson.com/upload-files-directly-to-s3-w-backbone-on-heroku/和 http://codeartists.com/post/36892733572/how-to-directly-upload-files-to-amazon-s3-from-your .
createCORSRequest: (method, url) ->
xhr = new XMLHttpRequest()
if xhr.withCredentials?
xhr.open method, url, true
else if typeof XDomainRequest != "undefined"
xhr = new XDomainRequest()
xhr.open method, url
else
xhr = null
xhr
uploadToS3: (file, signature) ->
this_s3upload = this
this_s3upload.signature = signature
url = signature.signed_request
xhr = @createCORSRequest 'PUT', decodeURIComponent(signature.signed_request)
if !xhr
@onError 'CORS not supported'
else
xhr.onload = () ->
if xhr.status == 200
this_s3upload.onProgress 100, 'Upload completed.'
this_s3upload.onFinishS3Put file, this_s3upload.signature
else
this_s3upload.onError file, 'Upload error: ' + xhr.status
xhr.onerror = () ->
this_s3upload.onError file, 'XHR error.', this_s3upload.signature
xhr.upload.onprogress = (e) ->
if e.lengthComputable
percentLoaded = Math.round (e.loaded / e.total) * 100
if percentLoaded == 100
message = "Finalizing"
else
message = "Uploading"
this_s3upload.onProgress xhr, file, percentLoaded, message, this_s3upload.signature
xhr.onabort = ->
this_s3upload.onAbort file, "XHR cancelled by user.", this_s3upload.signature
xhr.setRequestHeader 'Content-Type', file.type
xhr.setRequestHeader 'x-amz-acl', 'public-read'
xhr.send file
更新
在这个问题上我得到了亚马逊非常周到的支持。根据他们的建议,我创建了一个 EC2 Windows 实例,在其上加载了 Chrome 浏览器,并尝试使用我的代码上传 5 个文件 10 次。我一次都没有看到错误。我偶尔会看到一些 SignatureDoesNotMatch 错误,但没有看到一个 ERR_CONNECTION_RESET 错误。尽管在我使用的每个非 EC2 客户端/网络位置上,我仍然看到 ERR_CONNECTION_RESET 错误。
更新这里仍然没有解决方案。我已经从使用自滚动签名算法转向使用 boto 提供的算法。但对 ERR_CONNECTION_RESET 问题没有影响。
最佳答案
我在使用预签名 URL 上传较大文件(长请求)时遇到了此问题,如下 Heroku's example (节点AWS SDK):
app.get('/sign-s3', (req, res) => {
const s3 = new aws.S3();
const fileName = req.query['file-name'];
const fileType = req.query['file-type'];
const s3Params = {
Bucket: S3_BUCKET,
Key: fileName,
Expires: 60,
ContentType: fileType,
ACL: 'public-read'
};
s3.getSignedUrl('putObject', s3Params, (err, data) => {
if(err){
console.log(err);
return res.end();
}
const returnData = {
signedRequest: data,
url: `https://${S3_BUCKET}.s3.amazonaws.com/${fileName}`
};
res.write(JSON.stringify(returnData));
res.end();
});
});
“Expires”参数使签名 URL 的有效期为 60 秒。
我认为,当签名 URL 在上传过程中过期时,请求会崩溃(即使在上传开始时它是有效的)。
它不会在 60 秒后崩溃,而是在 60 到 120 秒之间随机崩溃。大多数情况下,客户端会记录 ERR_CONNECTION_RESET,有时会记录 403 FORBIDDEN。
将其调至 3600 后,我不再遇到任何问题。
我怀疑 EC2 上没有发生此问题,因为它们的上传速度非常快。
关于ajax - PUTting 到 S3 时出现 ERR_CONNECTION_RESET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798774/
前段时间公司的一个项目出现了一个 bug,使用 ajax 上传大文件时会出现网络问题。使用 chrome 开发者工具查看网络请求时,发现错误是 ERR_CONNECTION_RESET&
错误代码绝对是可怕的,ERR_CONNECTION_RESET 有很多原因,我在其他问题上发现的原因与大型 Web 服务调用的 MaxRequestLength 太小有关。不过,我返回的数据只有几 k
我尝试使用ajax将数据从我的输入发送到我的 Controller 以将数据保存在数据库中,但我收到了此错误我试图发送数据,但我的 Controller 操作没有收到任何内容 这是我的脚本
我在从我的应用调用 MobileFirst 适配器时遇到问题。如果我使用 swagger 文档或 postman 来测试适配器方法,它就可以工作。不幸的是,我从应用预览中收到消息: http://lo
我在没有供应商的情况下下载了 symfony 2.0.9。之后我执行 php bin/vendors install 来安装供应商。过程顺利。但是当我执行 http://localhost/proje
我有一个带有 php 后端的表单的多部分文件上传。我已将 php.ini 中的 max_execution_time 和 max_input_time 设置为 180,并在文件上传时确认已设置这些值并
服务器上的 Python 代码: from flask import * from flask_cors import CORS app = Flask(__name__) CORS(app) @ap
我正在尝试使用php将音频上传到服务器。我收到此错误。我了解问题是由于超时造成的。但是如何在thew服务器上进行更改? 最佳答案 set_time_limit(0) 这会将时间限制设置为无(也称为无时
在发布重复内容之前先阅读。 我目前正在制作一个模拟股票市场的网站。每秒,它都会向 http://dev.markitondemand.com/Api/v2/Quote/jsonp 发出 ajax 请求
你好所以我做了 rest wcf 并尝试完成一些对象调用并在它返回对象列表后我得到消息: GET http://localhost/ESService/ESService.svc/GetExecuti
我有一个 PHP 脚本可以下载和处理一些文件。有时文件数量很大,需要一些时间。 但是当有很多文件要处理时,连接会因“ERR_CONNECTION_RESET”错误而中断(Chrome)。 这是我的配置
我有一个带有 ckeditor 插件的文本区域。之前,我使用它没有问题,数据可以正常存储。但现在我收到错误“POST”...路径/url ...net::ERR_CONNECTION_RESET。当我
我刷新了我的应用程序页面并在控制台中收到此错误无法加载资源:net::ERR_CONNECTION_RESET。 我已尝试重新安装 XAMPP 版本,但这对我不起作用。 最佳答案 我认为您使用的是 c
昨天,Azure 上的所有网络应用程序都停止响应 https 链接。没有人碰过任何东西...当您尝试导航到 https 时,您会收到 ERR_CONNECTION_RESET 我尝试重新绑定(bind
希望有人能帮助我纠正这个问题。我正在进行最后一步,使用自定义域启用我的 CDN 端点。目前,存储上的静态网站可以通过以下方式正常工作。 1 - 存储帐户端点2 - Azure CDN xxxxxx.a
我有一个简单的 SingulaR 示例,已将其添加到旧版 ASP.Net MVC 应用程序中。 以下是各个部分: OWIN 启动类(class) [assembly: OwinStartup(type
我通过 ajax 请求将文件放入 S3,大约 50% 的时间我会收到 ERR_CONNECTION_RESET 错误。 我知道请求已正确签名 - 有什么想法可能导致此情况吗?同样,这是我从多个位置和机
我有一个非常简单的服务 worker 来添加离线支持。获取处理程序看起来像 self.addEventListener("fetch", function (event) { var url =
我有一个编码为base64格式的图像,我正在尝试像这样显示它。
当我的 ASP.NET 服务器尝试回复错误时,我在 Chrome 中收到了一个ERR_CONNECTION_RESET。 通常我可以通过查看日志文件找到有关服务器错误的信息,但那里什么也没有。 在响应
我是一名优秀的程序员,十分优秀!