2016-04-26 5 views
1

Я использую Fine Uploader с S3, и у меня есть клиент, компьютерное время которого выключено, что приводит к ошибке S3 RequestTimeTooSkewed. В идеале у моего клиента будет подходящее время, но я бы хотел, чтобы мое приложение было надежным в этой ситуации.Как работать с RequestTimeTooSkewed в Fine Uploader

Я видел это сообщение - https://github.com/aws/aws-sdk-js/issues/399 о том, как автоматически повторить запрос. Вы берете ServerTime из ответа об ошибке и используете это как время в ответе. Альтернативным подходом было бы просто получить время от надежного внешнего источника каждый раз, избегая необходимости повторения. Тем не менее, я не уверен, как подключить любой подход к S3 Fine Uploader. Кто-нибудь имеет представление о том, как это сделать?

ответ

1

Решение было предоставлено в Fine Uploader 5.5 для решения этой самой ситуации. От S3 feature documentation:

Если часы на машине, на которой работает Fine Uploader, слишком далеко от текущей даты, S3 может отклонить любые запросы, отправленные с этого аппарата. Чтобы преодолеть эту ситуацию, вы можете включить clock drift value в миллисекундах при создании нового экземпляра Fine Uploader. Один из способов установить это значение - вычесть текущее время в соответствии с браузером с текущего времени unix в соответствии с вашим сервером. Например:

var uploader = new qq.s3.FineUploader({ 
    request: { 
     clockDrift: SERVER_UNIX_TIME_IN_MS - Date.now() 
    } 
}) 

Если это значение не равно нулю, Fine Uploader S3 будет использовать его для прокладки заголовок х-АМЗ-даты и дату истечения срока действия политики посланный S3.

Смежные вопросы