PHP-从HTTPS请求获取JSON正文

时间:2018-10-14 11:10:25

标签: php json https

我有一些PHP文件,这些文件可以访问请求正文中的JSON,然后对其执行操作。

我使用以下方法获取JSON

$json = file_get_contents('php://input');
$input = json_decode($json, TRUE);

并使用以下命令访问值:

$input["val"]

但是,我刚刚升级到HTTPS,并推论这不是读取/接收任何JSON。

如何从HTTPS请求中获取JSON数据?

3 个答案:

答案 0 :(得分:0)

情况1: 根据问题提供的详细信息,我最好的猜测是您的目标服务器没有有效的SSL证书。

案例2 您的服务器没有适用于php脚本的https包装器。检查以下脚本的输出。

<?php

$wrappers = stream_get_wrappers();
echo 'openssl: ',  extension_loaded  ('openssl') ? 'yes':'no', "\n";
echo 'http wrapper: ', in_array('http', $wrappers) ? 'yes':'no', "\n";
echo 'https wrapper: ', in_array('https', $wrappers) ? 'yes':'no', "\n";
echo 'wrappers: ', var_export($wrappers);

答案 1 :(得分:0)

请注意跨站点https问题。使用https时,您的浏览器容忍度要比使用纯http时低。例如,一旦您的主站点为https,则支持脚本也将为https。

我建议您仔细查看浏览器的“网络”标签,寻找其他线索。

我希望这可以为您指明正确的方向。

---进一步调查---

  • 您可以将原始代码复制并粘贴到答案中吗?

您能尝试这些(寻找线索)吗?

print "<br>json: '$json'";
print "<br> type: ".gettype($json);
print "<br> last error: ".json_last_error();

答案 2 :(得分:0)

发现我的问题-我正在发送GET请求而不是POST请求。

由于某种原因,这种方法在没有HTTPS的情况下仍然有效,所以我认为这不是问题。立即修复!