11
votes

Amazon S3 obtenir une erreur 501 sur mettre

Lors du test d'une nouvelle application, un testeur a toujours ses téléchargements à S3 Fail. Nous envoyons une demande de vente d'un fichier ~ 1,2 Mo à S3 et de la définition des permanentes ACL. Pour lui, il reçoit toujours une erreur de 501 - non implémentée.

Voici ses en-têtes sur la demande: P>

Connection = close;
"Content-Length" = 321;
"Content-Type" = "application/xml";
Date = "Thu, 06 Oct 2011 03:00:14 GMT";
Server = AmazonS3;


3 commentaires

Y a-t-il une réponse? Qu'est-ce que c'est?


Post édition pour inclure le code d'état de la réponse et la chaîne


J'espère que votre question est répondue. La même chose me arrive. Github.com/learnboost/knox/issues/43


6 Réponses :


7
votes

501 Le code de réponse de Amazon peut être envoyé si aucune longueur de contenu n'est fournie.

Depuis que vous dites que vous le faites, je suggère d'exécuter la demande via un proxy ( Charles pour Mac ou Fiddler pour Windows) et assurez-vous que la demande en cours d'envoi inclut en réalité l'en-tête de la longueur de contenu


0 commentaires

3
votes

Quelques mises à jour sur ce sujet, car je cherchais des réponses moi-même. Cela semble être un message d'erreur plutôt général, avec plus d'une raison possible.

Pour API JavaScript, il y avait une solution de bogue pour le corps vide le 24 déc. 2012:


2 commentaires

Comme @Alon Burg mentionné, AWS essaie et omet de ne pas vous dire que vous manquez le la longueur de contenu


Je n'ai trouvé que de "longueur de contenu" lorsque je vois pour erreur - comme je le vois, l'API JavaScript prend soin de la longueur. J'étais intéressé par "PutObject sur iOS 8" (AWS-SDK-JS), où je ne vois aucune mention que la longueur de contenu est le problème, mais la mise en cache. J'étais probablement pas clair avec ce post.



1
votes

J'ai eu ce problème à Perl avec CPAN'S Net :: Amazon :: S3 :: Client. J'ai examiné la demande et la réponse et j'ai reconstitué le problème, à savoir que j'avais manqué à la possibilité de demander via HTTPS. Je l'ai réparé en installant LWP :: protocole :: https.


0 commentaires

7
votes

Le corps de réponse contient XML qui répertorie l'en-tête, ce n'est pas content, comme celui-ci: XXX

I Définissez la stratégie de cache sur mon Nsurlrequest à NsurlrequestrelAdignorScachedata. -Sait en-tête: xxx


0 commentaires

0
votes

J'ai aussi fait face à ce problème, lors de la mise en œuvre de PutObject dans le code JS, et j'ai constaté que je n'ai pas géré le corps JSON, ce qui a entraîné la même erreur.


0 commentaires

1
votes

Comme @alon Burg a souligné que S3 s'attend à ce que l'en-tête longueur de contenu soit défini. Vous ne pouvez pas utiliser directement des flux (ou je n'ai pas compris comment); Fetch (ou NODE-FETCH) Lorsque vous passez dans un Readstream comme corps, il définit l'en-tête de transport sur chunqué < / code> que S3 ne prend pas en charge (lors de l'utilisation de putobject ).

Le correctif est de convertir pour d'abord convertir le readstream à un tampon (ou la chaîne) et transmettez-le comme un corps qui permet récupération pour calculer le longueur de contenu derrière la porte


0 commentaires