2015-11-02 3 views
0

Я пытаюсь загрузить файл на S3, следуя примерам, приведенным в документации и исходных файлах. К сожалению, при попытке загрузки я получаю следующие ошибки:Получение недопустимого документа политики или заголовков запросов!

[Fine Uploader 5.3.2] Недопустимый политический документ или заголовки запросов!

[Fine Uploader 5.3.2] Не удалось подписаться с политикой. Недопустимый политический документ или запросить заголовки!

Я нашел несколько сообщений здесь с похожими ошибками, но эти решения мне не помогли.

Вот мой JQuery:

<script> 
    $('#fine-uploader').fineUploaderS3({ 
     request: { 
      endpoint: "http://mybucket.s3.amazonaws.com", 
      accessKey: "changeme" 
     }, 
     signature: { 
     endpoint: "endpoint.php" 
     }, 
     uploadSuccess: { 
      endpoint: "success.html" 
     },   
     template: 'qq-template' 
    }); 
</script> 

(Пожалуйста, обратите внимание, что я изменил ключи/имена ковшеобразные ради безопасности.)

Я использовал вашу конечную точку-cors.php в качестве модели и включили части, которые я модифицированные здесь:

require 'assets/aws/aws-autoloader.php'; 
use Aws\S3\S3Client; 

// These assume you have the associated AWS keys stored in 
// the associated system environment variables 
$clientPrivateKey = $_ENV['changeme']; 
// These two keys are only needed if the delete file feature is enabled 
// or if you are, for example, confirming the file size in a successEndpoint 
// handler via S3's SDK, as we are doing in this example. 
$serverPublicKey = $_ENV['AWS_SERVER_PUBLIC_KEY']; 
$serverPrivateKey = $_ENV['AWS_SERVER_PRIVATE_KEY']; 

// The following variables are used when validating the policy document 
// sent by the uploader. 
$expectedBucketName = $_ENV['mybucket']; 
// $expectedMaxSize is the value you set the sizeLimit property of the 
// validation option. We assume it is `null` here. If you are performing 
// validation, then change this to match the integer value you specified 
// otherwise your policy document will be invalid. 
// http://docs.fineuploader.com/branch/develop/api/options.html#validation-option 
$expectedMaxSize = (isset($_ENV['S3_MAX_FILE_SIZE']) ? $_ENV['S3_MAX_FILE_SIZE'] : null); 

Я также изменил это:

// Only needed in cross-origin setups 
function handleCorsRequest() { 
// If you are relying on CORS, you will need to adjust the allowed domain here. 
header('Access-Control-Allow-Origin: http://test.mydomain.com'); 
} 

В POST, кажется, работает:

POST http://test.mydomain.com/somepath/endpoint.php 200 OK 318ms

... но вот где успех заканчивается.

Я думаю, что часть проблемы в том, что я не уверен, что вводить для «clientPrivateKey». Это мой «секретный ключ доступа», который я установил с помощью IAM?

И я определенно неясно, где я получаю serverPublicKey и serverPrivateKey. Где я могу создать пару ключей на S3? Я прочесал документы и, возможно, пропустил это.

Заранее благодарю вас за помощь!

ответ

0

Во-первых, вы используете endpoint-cors.php в среде, отличной от CORS. Связь между браузером и конечной точкой выглядит одинаково, исходя из URL-адреса вашей конечной точки подписи. Переключитесь на пример endpoint.php.

Что касается ваших вопросов о ключах, вы должны создать двух разных пользователей IAM: один для операций на стороне клиента (сильно ограниченный) и один для серверных операций (пользователь admin). Для каждого пользователя у вас будет ключ доступа (общедоступный) и секретный ключ (закрытый). Вы всегда поставляете Fine Uploader своим открытым клиентом на стороне клиента и используете свой закрытый клиентский ключ для подписи запросов на стороне сервера. Чтобы выполнять другие, более ограниченные операции (например, удаление файлов), вы должны использовать ключи своего сервера.

+0

Благодарим за отзыв. Я перешел на пример endpoint.php в соответствии с вашими инструкциями, заполнил переменные среды, как раньше ... но я все равно получаю точные точные ошибки: «Недопустимый политический документ или заголовки запросов!» и «Ошибка подписания политики. Недействительный документ политики или заголовки запросов!» Какую дополнительную информацию я могу предоставить? – mrbranden

+0

Несколько дней назад (6 ноября) я приобрел лицензию на этот продукт, а также билет технической поддержки для помощи в этой проблеме. Я ничего не слышал, даже подтверждение билета. Что мне нужно сделать для моего билета, чтобы его заметили? Большое спасибо. – mrbranden

+0

@mrbranden Ваше сообщение поймано в нашем спам-фильтре. Отвечаю сейчас. –

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