当前位置: 首页 > 知识库问答 >
问题:

HTTPS上的套接字错误,但HTTP PHP上没有

窦啸
2023-03-14
   if (strstr($_SERVER['PHP_SELF'], "/")) { 
        $location = array(); 
        $location = explode("/", $_SERVER['PHP_SELF']); 
        $folder = $location[count($location) - 2]; 
    } 
    else { 
        $folder = $_SERVER['PHP_SELF']; 
    }

    //script, runs in background
    $host = HOST;
    $remote_house = 'https://'.$host.'/'.$folder.'/controllers/background';

    $socketcon = fsockopen($host, 80);

    if($socketcon) {   
        $socketdata = "GET $remote_house/".$scriptName." HTTPS 1.1\r\nHost: $host\r\nConnection: Close\r\n\r\n"; 
        fwrite($socketcon, $socketdata); 
        fclose($socketcon);
    }

共有1个答案

刘运浩
2023-03-14
$socketdata = "GET $remote_house/".$scriptName." HTTPS 1.1\r\n...

这是一个无效的HTTP和一个无效的HTTPS请求。首先,它应该是HTTP/1.1而不是HTTPS1.1。对于HTTPS,您需要首先创建到对等体的SSL/TLS连接,然后通过该连接发送HTTP请求。

$remote_house = 'https://'.$host.'/'.$folder.'/controllers/background';

此外,请求中的path组件不应包含完整的URL,而应仅包含路径,即'/'.$folder.'/controllers/background'

$socketcon = fsockopen($host, 80);

对于HTTPS,您需要连接到端口443,而不是80,然后在发送HTTP请求之前在那里进行SSL/TLS握手。

 类似资料:
  • 我已经在Raspberry Pi上安装了MQTT,并为代理配置了Arduino Uno,但在/var/log/mosquitto/mosquitto.log文件中看到了以下条目: Pi是用有线到本地LAN的ETH0设置的,IP地址为192.168.1.50 在PI上还有一个WiFi AP设置。Arduino Uno通过WiFi连接以发送/接收MQTT消息。WiFi AP的IP地址为192.168.

  • 问题内容: 任何人都可以通过TCP发送Ascii msg的示例给我(在网上找不到示例) 谢谢, 射线。 问题答案: 这是一个写入和读取回显服务器的示例。 简化摘录:

  • 这很好,但没有SSL。 我已经使用OpenSSL为服务器和客户机生成了SSL证书,结果是: 服务器的证书(PEM格式) 客户端的证书(PEM格式) 服务器的私钥(PEM格式) 客户端的私钥(PEM格式) CA文件(PEM、CER和CRT格式) null 会出什么问题?

  • 错误:在object.exports._errnoException(util.js:856:11)在exports._exceptionWithHostPort(util.js:879:20)在tcpConnectTRap.AfterConnect[as oncomplete](net.js:1063:14)vivek@vivek-latitude-e6220://var/www/html/te

  • 我正在使用apache HttpClient上传固件文件(.bin)。当我上传一个大小为37MB的这样的文件时,我得到一个错误:连接被对等体重置:套接字写入错误。我不知道怎么解决。但当我尝试其他较小大小的文件(如.txt或.bin)时,没有任何错误。

  • 它仍然打印出10个“*”,但后来我得到了这个错误: 但是如果我使用hasNext而不是hasNextLine,它可以正常工作。 所以我想知道为什么hasNext有效,而hasNextLine无效。