我有一个PHP / JS页面,它使得JQuery ajax调用另一个PHP脚本,该脚本调用REST服务并将响应发送回PHP / JS页面。我这样做是因为我找不到非JSONP方式来从JS(不同的域)调用服务。
无论如何,在家里它完美无缺。我在办公室部署并首先得到像这样的apache错误:
Chunked-Encoded数据中的问题(2)
我通过添加以下内容来解决这个问题: CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0 我的卷曲选项。
然而,现在出现的数据在钻石中有一个问号,在开头和结尾都有不属于的字符,等等。从我发现这可能是一个编码问题,但我的努力修复它不起作用。
再次,从家里完美地工作......而不是工作。
任何帮助非常感谢
------------------------------编辑跟进--------------- --------------
编码问题首先出现在服务的响应中。这是发送/接收的代码:
$request_headers = array();
$request_headers[] = 'Content-Type: application/json';
$request_headers[] = 'Authorization: Bearer ' . $token;
$options = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_VERBOSE => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => '',
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 10,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_HTTPHEADER => $request_headers,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0
);
curl_setopt_array( $ch, $options );
$response = curl_exec($ch);
我将$响应记录到磁盘上,并在JSON之前看到一个ó,然后在它之后看到一个Ê。
------------------------------第二次编辑后续行动-------------- ---------------
我显然需要改为: $ request_headers [] ='application / x-www-form-urlencoded';
感谢您的提示。
答案 0 :(得分:5)
我是从其他堆栈问题here找到的,它也解决了我的问题,它看起来像卷曲版本问题。
将此选项添加到curl处理程序中:
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);