Я пытаюсь сделать POST-запрос к URL с помощью Curl, но получаю эту ошибку? - PullRequest
9 голосов
/ 23 февраля 2011

ОШИБКА:

Слишком большой объект запроса Запрошенный ресурс /check.php не разрешает данные запроса с запросами POST или объем данных, предоставленных в запросе, превышает ограничение емкости.

В чем причина этой ошибки?Я думаю, что размер данных не может быть причиной, и я знаю ./check.php принимает метод POST.Это что-то вроде безопасности, которая разрешает доступ?

regards, aqif

Ответы [ 6 ]

15 голосов
/ 19 ноября 2012

Если вы действительно хотите использовать POST, вам придется использовать CURLOPT_POST и CURLOPT_POSTFIELDS в этом порядке.Наличие результата удобно и для отладки.

<?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;

edit: просто заметка, если вы не хотите отправлять параметры с постом, используйте пустой массив.пустая строка сломает завиток.

4 голосов
/ 20 марта 2012

Не уверен, поможет ли это кому-нибудь, но вот что решило проблему для меня:

У меня было следующее:

    $ch = curl_init($process_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    $results = @curl_exec($ch);

CURLOPT_POST - это то, что вызывало проблему,Мой настоящий curl не содержал переменных $ _POST, он содержал только строку запроса $ _GET.Как только я удалил строку с CURLOPT_POST, все заработало, как и ожидалось.

У меня не возникало этой проблемы при установке CentOS, однако на моем Mac я использовал OSX Lion с PHP 5.3 +

3 голосов
/ 04 июня 2012

Если вы вынуждены сделать запрос POST без параметров, вы можете установить для них пустую строку или массив.Это решило эту проблему для меня.

Либо

curl_setopt($ch, CURLOPT_POSTFIELDS, '');

Или

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

Имейте в виду, что последний из них сбрасывает заголовок типа содержимого неявным образом.

2 голосов
/ 12 января 2012

Я столкнулся с подобной проблемой с WFetch. Я сам определял заголовок Content-Length, и оказалось, что WFetch использовал свой собственный заголовок Content-Length. После удаления моего заголовка Content-Length все заработало. Может ли это быть и в случае с Curl?

1 голос
/ 23 июня 2016

Если вы используете curl_exec, вы должны установить

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

Если вы пропустите это, у вас будет ошибка 413 Request Entity Too Large

1 голос
/ 23 февраля 2011

Что ж, этот ответ об ошибке определенно не является мерой безопасности. RFC 2616 говорит об этом 413 Request Entity Too Large:

Сервер отказывается обрабатывать запрос, поскольку объект запроса больше, чем сервер желает или может обработать. Сервер МОЖЕТ закрыть соединение, чтобы клиент не мог продолжить запрос.

Вы подтвердили , что размер не проблема? Многие веб-хостинги имеют довольно маленький лимит загрузки POST (есть несколько вещей, которые бросили бы 413).

В противном случае это может быть сам скрипт PHP, возвращающий этот ответ (через header()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...