我可以互换地在URL中使用ssl://和https://吗?

时间:2014-05-06 11:50:26

标签: php http url post request

我必须编写一些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;
}

2 个答案:

答案 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://,因此我建议不要在任何情况下使用它。

相关问题