1

出于安全原因,我必须将 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)得到一个空对象。有人知道我做错了什么吗?

已解决(有人回答正确但答案被删除?!)

curl_setopt($ch, CURLOPT_POSTFIELDS, "json=$content");

4

1 回答 1

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"); 
于 2013-02-23T13:32:51.313 回答