出于安全原因,我必须将JSON对象从Jquery脚本转发到PHP脚本。这就是我所做的:
<?php
header('Access-Control-Allow-Origin: *');
$input = @file_get_contents('php://input');
$content = json_encode( $input );
$url = $_GET["trakt_url"]."KEY";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json')
);
$result = curl_exec($ch);
echo $result;
?>
如果我记录$ content,我会得到JSON对象,但是我发布到的页面($ url)是一个空的Object。有人知道我做错了吗?
解决了(有人回答正确,但答案已删除?!)
curl_setopt($ ch,CURLOPT_POSTFIELDS,“json = $ content”);
答案 0 :(得分:1)
尝试在请求标头中设置内容长度:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($content))
);
您还需要确保将POSTFIELDS定义为urlencoded字符串,因为将其设置为数组会将内容类型覆盖为multipart/form-data
。这将有效:
curl_setopt($ch, CURLOPT_POSTFIELDS, "json=$content");