PHP的卷曲HTTP/1.1 400错误的请求
我尝试发送请求(POST请求)到URL,但它返回PHP的卷曲HTTP/1.1 400错误的请求
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;
荫当然从所有后场,但同样的响应返回 但在浏览器EV一切都可以
首先,您可以将$output = curl_exec($ch);
更改为echo $output = curl_exec($ch);
。这样您将在浏览器中看到错误消息。
另外,试试urlencode($ url);万一你的网址有一些空白的地方。
但您的问题很可能是目标服务器的安全性。很多服务器将cURL视为跨站点伪造攻击。这就是为什么任何cURL脚本必须包含目标页面的csrf令牌才能发布参数。
您必须先从您的目标页面找到令牌,然后编写代码,以便您的脚本将解析出curl_exec输出字符串中的令牌。
您可以随时重写您的代码。
是这样的:
$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);
很多事情可以去错了你version.If这不起作用,重新检查我在我的第一个前面回答写道。
我们可以通过Skype聊天吗? – Looper
@Looper这是你将要做的。1)用firefox打开目标url(不是chrome).2)按ctl + SHIFT + i 3)进入网络选项卡4)控制台仍然打开,自己填写输入点击保存。 4)当发布发布请求时,你会在控制台上看到它,选中它并转到参数。5)检查长字符串,可以命名为form_id或form_token id –
确定帕拉姆我检查它相同的头部请求希望x-csrf-token除了authication_token除了authication_token外我试图发送它作为邮件请求中的标题你有Skype的同样的反应? – Looper
感谢您的重播这是返回的值HTTP/1.1 400错误请求 内容处置:附件;文件名= json.json 内容长度:118 content-type:application/json; charset = utf-8 date:Sat,02 Sep 2017 12:34:26 GMT server:tsa_o strict-transport-security:最大年龄= 631138519 变化:原产 的x连接的散列:ee1dbbca70af69c7815edcb505d16533 的x内容类型选项:nosniff X框选项:SAMEORIGIN 的x响应时间:107 的x事务:00d500270066af4b x-tsa-request-body-time:1 x-xss-protection:1; mode = block' – Looper
'{“capsError”:“权限不足”,“requestId”:“6bcb762e8d2c9039b0eb715f252944924fb2cd90ef3174503d65fe464acb2d87”}' – Looper
@Looper回答我的问题或我无法帮助您。是否使用cURL登录到您的网址? –