我必须编写一些PHP代码来向外部服务器发出请求,并从服务器所有者那里得到两个不同的例子,一个使用“ssl://”,另一个使用URL中的“https://”。
它们可以互换使用吗?这会记录在哪里?谢谢!
编辑包含PHP代码(不知道为什么我无法正确格式化代码,如果有人可以帮助解释如何在代码块中合并初始注释):
// make a http post request to an external server
function httpPost($host, $usepath, $postdata = "") {
$fp = fsockopen($host, 443, $errno, $errstr, 60);
if( !$fp ) {
print "$errstr ($errno)<br>\n";
}
else {
fwrite( $fp, "POST $usepath HTTP/1.0\n");
$strlength = strlen( $postdata );
fwrite( $fp, "Content-type: application/x-www-form-urlencoded\n" );
fwrite( $fp, "Content-length: ".$strlength."\n\n" );
fwrite( $fp, $postdata."\n\n" );
$output = "";
while( !feof( $fp ) ) {
$output .= fgets( $fp, 1024);
}
fclose( $fp);
}
return $output;
}
答案 0 :(得分:2)
ssl://
网址非常适合PHP。它是PHP在使用fsocketopen
函数时提供使用直接SSL / TLS连接的方式的方式。请参阅List of Supported Socket Transports in the manual。
ssl://
会在没有任何应用程序协议的情况下为您提供SSL / TLS连接:您的应用程序将根据您的通信需要实施任何协议。
相反,https://
将通过此SSL / TLS连接实现HTTP协议。
请注意default settings for ssl://
and tls://
are rather poor in terms of security。特别是,verify_peer
的默认值为false,这会使连接容易受到MITM攻击。
答案 1 :(得分:1)
HTTPS是使用SSL加密的HTTP协议。 POST请求在HTTP协议中定义,因此您应该使用https://
。
查看IANA的list of URI schemes,我没有看到ssl://
,因此我建议不要在任何情况下使用它。