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;
6 Réponses :
501 Le code de réponse de Amazon peut être envoyé si aucune longueur de contenu n'est fournie. P>
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 p>
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. P>
Pour API JavaScript, il y avait une solution de bogue pour le corps vide le 24 déc. 2012: p>
Récemment sur iOS 8, il y a des problèmes de mise en cache agressif (et non standard), que Amazon n'aime pas. S'il y a eu un getObject avant, si l'en-tête de modification si modifié est envoyé pour des demandes ultérieures pour le même objet / URL, même pour les demandes de vente: p>
Comme @Alon Burg mentionné, AWS essaie et omet de ne pas vous dire que vous manquez le la longueur de contenu code>
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.
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. P>
Le corps de réponse contient XML qui répertorie l'en-tête, ce n'est pas content, comme celui-ci: I Définissez la stratégie de cache sur mon Nsurlrequest à NsurlrequestrelAdignorScachedata. -Sait en-tête: p>
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. P>
Comme @alon Burg a souligné que S3 s'attend à ce que l'en-tête code> longueur de contenu code> soit défini. Vous ne pouvez pas utiliser directement des flux (ou je n'ai pas compris comment); Le correctif est de convertir pour d'abord convertir le Fetch CODE> (ou NODE-FETCH) Lorsque vous passez dans un
Readstream code> comme corps, il définit l'en-tête code> de transport code> sur
chunqué < / code> que S3 ne prend pas en charge (lors de l'utilisation de
putobject code>). P>
readstream code> à un tampon code> (ou la chaîne) et transmettez-le comme un corps qui permet
récupération code> pour calculer le
longueur de contenu code> derrière la porte p>
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