Tôi đang PUTting tệp tới S3 thông qua yêu cầu ajax và khoảng 50% thời gian tôi nhận được lỗi ERR_CONNECTION_RESET.ERR_CONNECTION_RESET khi PUTting đến S3
Tôi biết các yêu cầu được ký chính xác - bất kỳ ý tưởng nào có thể gây ra điều này? Một lần nữa, đây là một vấn đề liên tục mà tôi thấy từ nhiều địa điểm và máy móc.
Đây là mã coffeescript có liên quan mà tôi đang sử dụng để PUT tệp của tôi tới S3. Nó có nguồn gốc từ tác phẩm của Micah Roberson và Rok Krulec tại http://micahroberson.com/upload-files-directly-to-s3-w-backbone-on-heroku/ và 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
Cập nhật
tôi đã nhận được sự ủng hộ rất chu đáo từ Amazon về vấn đề này. Theo đề xuất của họ, tôi đã tạo một cá thể Windows EC2, tải trình duyệt Chrome lên đó và cố gắng tải lên 5 tệp 10 lần với mã của tôi. Tôi không thấy lỗi một lần. Đôi khi tôi đã gặp một số lỗi SignatureDoesNotMatch nhưng không gặp lỗi ERR_CONNECTION_RESET. Tôi vẫn thấy lỗi ERR_CONNECTION_RESET mặc dù trên mọi vị trí máy khách/mạng không phải EC2 mà tôi sử dụng.
Cập nhật Vẫn không có giải pháp nào ở đây. Tôi đã chuyển từ sử dụng thuật toán ký tự cuộn sang một thuật toán được cung cấp bởi boto. Tuy nhiên, không ảnh hưởng đến vấn đề ERR_CONNECTION_RESET.
Nếu ai đó đang gặp vấn đề tương tự, tôi sẽ đánh giá cao việc biết tôi không đơn độc. ;) – Erik
Tôi đang gặp vấn đề tương tự! Tôi đang sử dụng cùng một bộ tài nguyên (blog và mã mô hình), và có kết quả chính xác như nhau. Khoảng một nửa thời gian, yêu cầu cung cấp ERR_CONNECTION_RESET không có thông tin khác. –
Cảm ơn Joan. Tôi có một câu hỏi tích cực với AWS, nhưng nó đòi hỏi tôi phải sao chép mã trình duyệt của tôi như là một quá trình độc lập để họ gỡ lỗi - điều này đòi hỏi một số phát triển. – Erik