2013-04-29 6 views
6

Я использую signed POST для загрузки файла непосредственно на amazon S3. У меня были некоторые проблемы с сигнатурой политики с использованием PHP, но, наконец, она была исправлена, и вот sample of code.Использовать политику AWS S3 success_action_redirect с XHR

Этот запрос xhr отправляется в javascript, и я жду ответа от amazon. Сначала я использовал success_action_status, установив его на 201, чтобы получить ответ XML.

Что бы я хотел сделать, это использовать success_action_redirect, чтобы вызвать скрипт на моем сервере для создания записи в базе данных.

Причина, по которой я могу создать запись в базе данных, и если на этом этапе произойдет что-то неправильное, я могу немедленно отправить сообщение об ошибке. Также он сохраняет мне еще один запрос ajax на мой сервер.

Так что я попытался установить это, указав success_action_redirect на http:\\localhost\callback.php, где у меня есть скрипт, ожидающий некоторых параметров.

Но похоже, что этот сценарий никогда не вызывается и ответ xhr.send() пуст.

Я думаю, что это проблема с кросс-браузером, и мне интересно, можно ли как-то использовать jsonp для этого? Любые идеи?

UPDATE

Видимо XHR следует за перенаправление изначально так оно должно работать, но когда я указал success_action_redirect возвращает error Server responded with 0 code.

Сначала я думал, что это произошло потому, что перенаправление URL был на моем локальном сервере, так Я изменил его на доступный сервер, но никаких шансов.

Кто-нибудь знает, почему он возвращает это сообщение об ошибке?

+0

Я просто сдался, поскольку я думаю, что это невозможно. XHR.send() возвращает пустой ответ, который подразумевает, что amazon считает, что мой URL-адрес перенаправления не является допустимым URL-адресом. Я не знаю, почему, и я не могу найти документацию об этом :( – maxwell2022

+0

Имея ту же проблему, удачи? –

+0

Nop, обрабатываю обратный вызов на стороне клиента, в моем javascript-коде. – maxwell2022

ответ

0

Я также сталкиваюсь с этой проблемой. Кажется, никто не имеет решения для этого like this Возможно, лучшее обходное решение, которое я нашел, это что-то вроде this. Кажется, единственное обходное решение включает второй запрос xhr для выполнения обратного вызова вручную. поэтому

success_action_status

следует использовать. С его помощью вы получите ответ 201, если загрузка была успешной, и вы можете запустить второй запрос для фактического обратного вызова. Для меня это похоже на единственно возможное решение на данный момент.

Любые другие решения?

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