Php Curl HTTP / 1.1 400 Bad Request

Я пытаюсь отправить запрос (Post Request) на URL, но он возвращается

HTTP/1.1 400 Bad Request
content-disposition: attachment; filename=json.json
content-length: 118
content-type: application/json;charset=utf-8
date: Sat, 02 Sep 2017 11:33:56 GMT
server: tsa_o
strict-transport-security: max-age=631138519
vary: Origin
x-connection-hash: 32931e6376249fb1689df3203e847a2b
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-response-time: 108
x-transaction: 0021b7c8005c6a4e
x-tsa-request-body-time: 1
x-xss-protection: 1; mode=block

{ «CapsError»: «insufficientpermission», «RequestID»: «4f0c87b1349996812fafe51ca6a8197b5bb1e9d560d7dcb8a450ab
3c890e40ac «}

мой код

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $URL,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => 'postField',
CURLOPT_COOKIEJAR =>  realpath("cookies/" . $name . ".txt"),
CURLOPT_COOKIEFILE => realpath("cookies/" . $name . ".txt"),
CURLOPT_CONNECTTIMEOUT=>30,
CURLOPT_HEADER         => true,      // return headers
CURLOPT_SSL_VERIFYPEER=>true,
));
$output = curl_exec($ch);
curl_close( $ch );
return $output;

Iam Sure From All Post Field, но тот же ответ Вернуться
Но в браузере все хорошо

1

Решение

Прежде всего вы можете изменить $output = curl_exec($ch); в echo $output = curl_exec($ch); Таким образом, вы увидите сообщения об ошибках в вашем браузере.

Также попробуйте urlencode ($ url); в случае, если в вашем URL есть пробелы.

Но ваша проблема, скорее всего, заключается в безопасности целевого сервера. Многие серверы рассматривают cURL как мошеннические атаки на сайты. Вот почему любой сценарий cURL должен содержать токен csrf целевой страницы в качестве параметров публикации.

Сначала вы должны найти токен на целевой странице, а затем написать код, чтобы ваш скрипт анализировал токен из выходной строки curl_exec.

0

Другие решения

Вы всегда можете переписать свой код.

что-то вроде этого :

 $http_headers = array(
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',);

$crl = curl_init();
$url = "http://www.example.gr/node/add/content";
curl_setopt($crl, CURLOPT_URL, $url);
curl_setopt($crl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt");
curl_setopt ($crl, CURLOPT_COOKIEJAR, "/tmp/cookie.txt");
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($crl, CURLOPT_HEADER, true);
curl_setopt($crl, CURLOPT_HTTPHEADER, $http_headers);
curl_setopt($crl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($crl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($crl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($crl, CURLOPT_USERAGENT,  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36");
curl_setopt ($crl, CURLOPT_POSTFIELDS, $postdata);

echo $result=curl_exec($crl);
curl_setopt($crl, CURLOPT_POST, 1);
$postdata = array(
"title_field[und][0][value]"=>"category",
"op"=>"Save",     );
curl_setopt ($crl, CURLOPT_POSTFIELDS, $postdata);
echo $result=curl_exec($crl);

Многие вещи могли пойти не так с вашей версией. Если это не сработает, перепроверьте, что я написал в своем первом ответе.

0

По вопросам рекламы [email protected]