9
votes

J'essaie de faire une demande postale à une URL à l'aide de CURL, mais d'obtenir cette erreur?

ERREUR:

Demander une entité trop grande La ressource demandée /check.php N'autorise pas les données de demande avec les demandes postales ou la quantité de données fournie dans la demande dépasse la limite de capacité.

wharm pourrait être la raison de cette erreur? Je pense que la taille des données ne peut pas être la raison et je sais ./check.php accepte la méthode postale. Est-ce comme une certaine sécurité qui lmite accès?

Cordialement, AQIF


0 commentaires

6 Réponses :


1
votes

Eh bien, cette réponse d'erreur n'est définitivement pas destinée à une mesure de sécurité. RFC 2616 dit ceci sur 413 Demande entité Trop grand :

Le serveur refuse de traiter une demande car l'entité de demande est plus grande que le serveur est disposée ou capable de traiter. Le serveur peut fermer la connexion pour empêcher le client de poursuivre la demande.

Avez-vous VERIFIER que la taille n'est pas le problème? De nombreux hébergements Web ont une limite de téléchargement post assez petite (peu de choses qui lanceraient un 413).

Sinon, il pourrait être le script PHP lui-même renvoyant cette réponse (via en-tête () ).


2 commentaires

Je ne suis pas informé de votre réponse par courrier: / Désolé pour une réponse tardive. Mais j'ai encore besoin de ça. Cela ne doit pas être un problème de taille. J'ai essayé avec la longueur de contenu de 35 aussi. Mais toujours la même réponse.


@AQI: Eh bien, je ne peux imaginer aucune autre raison pertinente que le serveur renvoie ce code d'erreur. Il est possible que cela soit mal configuré et que l'auteur ait voulu retourner quelque chose d'autre (403 interdit peut-être? w3.org/protocols/rfc2616/rfc2616-sec10.html#sec10.4.4 ).



2
votes

J'ai rencontré un problème similaire avec Wfetch. Je spécifiais moi-même l'en-tête de longueur de contenu moi-même, et il s'avère que Wfetch claquait sur son propre en-tête du contenu. Après avoir retiré mon en-tête de la longueur de contenu, tout a fonctionné. Pourrait-il être le cas avec boucle, aussi?


0 commentaires

4
votes

Je ne sais pas si cela aidera quiconque, mais ce qui suit est ce qui a résolu le problème pour moi:

J'avais ce qui suit: xxx

Le curlopt_post est ce qui était causer le problème. Mon courbure réelle ne contenait aucun Vars de $ _post, il n'avait qu'une chaîne de requête $ _get. Une fois que j'ai enlevé la ligne avec curlopt_post, tout a fonctionné comme prévu.

Je n'ai pas expérimenté ce problème sur une installation Centos, cependant, j'ai fait sur mon Mac avec OSX Lion avec PHP 5.3 + < / p>


0 commentaires

3
votes

Si vous êtes obligé de faire une demande de poste sans paramètres, vous pouvez les définir pour vider la chaîne ou la matrice. Qui a résolu ce problème pour moi.

p>

curl_setopt($ch, CURLOPT_POSTFIELDS, array());


1 commentaires

C'était la réponse pour moi aussi



15
votes

Si vous voulez vraiment utiliser POST, vous aurez utiliser curlopt_post et curlopt_postfields dans cette commande. Avoir le résultat est utile pour le débogage également.

<?php 

$params=array(
  'a'=>'text1',
  'b'=>'text2'
);

$curl=curl_init();

curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

$result=curl_exec($curl);

print $result;


3 commentaires

Cela s'est débarrassé de ma "entité de demande trop grande". Grands trucs.


Le kicker pour moi était que l'ordre occupé réellement. Je fixais Curlopt_post après Curlopt_Postfields et c'était très contrarié. Voyant cela, avec l'emphase de Gergely sur "Dans cet ordre" a résolu mon problème!


L'erreur se produira également si vous définissez true sur curlopt_post mais n'envoie aucun mail.



1
votes

Si vous utilisez curl_exec que vous devez définir

curl_setopt ($ ch, curlopt_postfields, ** tableau () **);

Si vous manquerez cela, vous aurez donc une entité de demande d'erreur 413 trop grande


0 commentaires