Sto trasmettendo file a S3 tramite richieste ajax e circa il 50% del tempo in cui si verificano errori ERR_CONNECTION_RESET.ERR_CONNECTION_RESET quando PUTting su S3
So che le richieste sono firmate correttamente - qualche idea che cosa potrebbe causare questo? Ancora una volta, questo è un problema intermittente che vedo da più postazioni e macchine.
Ecco il codice coffeescript relativo che sto utilizzando per mettere i miei file su S3. Deriva dai lavori di Micah Roberson e Rok Krulec allo http://micahroberson.com/upload-files-directly-to-s3-w-backbone-on-heroku/ e allo 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
Aggiornamento
Sono stato sempre molto attento sostegno da Amazon su questo tema. Per loro suggerimento, ho creato un'istanza di Windows EC2, caricato il browser Chrome e tentato di caricare 5 file 10 volte con il mio codice. Non ho visto l'errore una volta. Ho riscontrato alcuni errori di SignatureDoesNotMatch occasionalmente, ma non un singolo errore ERR_CONNECTION_RESET. Sto ancora vedendo errori ERR_CONNECTION_RESET su ogni client non-EC2/percorso di rete che utilizzo.
Aggiornamento Ancora nessuna soluzione qui. Mi sono trasferito dall'usare un algoritmo di autofullazione a quello fornito da boto. Nessun impatto sul problema ERR_CONNECTION_RESET però.
Se qualcun altro sta avendo lo stesso problema, gradirei sapere che non sono solo. ;) – Erik
Sto avendo lo stesso problema! Sto usando lo stesso insieme di risorse (il blog e il codice del modello) e ho lo stesso risultato. Circa la metà delle volte, la richiesta restituisce ERR_CONNECTION_RESET senza altre informazioni. –
Grazie Joan. Ho una domanda attiva in AWS, ma mi richiede di replicare il mio codice del browser come processo autonomo per eseguire il debug, il che richiede un po 'di sviluppo. – Erik