Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use AWS S3 success_action_redirect policy with XHR

I'm using signed POST to upload file directly to amazon S3. I had some trouble with the signature of the policy using PHP but finally fixed it and here is the sample of code.

This xhr request is send in javascript and I'm waiting for an answer from amazon. At first I was using success_action_status setting it to 201 to get the XML response.

What I'd like to do is using the success_action_redirect to call a script on my server to create a record in the database.

The reason why is that I could create the record in the database and if anything wrong happen at this stage I can return an error message directly at this point. Also it saves me another ajax request to my server.

So I've tried to set this up specifying the success_action_redirect to http:\\localhost\callback.php where I have a script that is waiting for some parameters.

But it looks like this script is never called and the response of the xhr.send() is empty.

I think it's a cross-browser issue and I'm wondering if it would be possible to use jsonp somehow to pass-by this? Any ideas?

UPDATE

Apparently xhr is following redirect natively so it should work but when I specified the success_action_redirect it returns error Server responded with 0 code.

At first I thought it was because the redirect URL was on my local server so I've changed it to an accessible server but no chance.

Anyone knows why it's returning this error message?

like image 658
maxwell2022 Avatar asked Apr 29 '13 10:04

maxwell2022


1 Answers

I also run into this problem. It seems like nobody has a solution to this like this maybe the best workaround i have found is something like this. It seems thet the only workaround includes a second xhr-request to execute the callback manually. therefore the

success_action_status

should be used. Witht his you will get a 201 response if the upload was successful and you can start a second request for the actual callback. For me it looks like the only possible solution at the moment.

Any other solutions?

like image 140
simon Avatar answered Oct 06 '22 01:10

simon