0

给定URLhttps://127.0.0.1:8443/example.html <- 是的,它是安全连接)正在检查用户是否已登录(通过 jboss 服务器),如果是,则他有权访问某些内容。

当我登录并尝试在浏览器中运行此url时,一切正常,jboss logger 显示用户已登录,但是当我从 php 脚本(http://127.0.0.1/test/check < - codeigniter url,下面的代码)用户总是在 jboss 中注销。不知道为什么。

我试过curl库,也没有成功。

public function check(){
    echo 'begin';
//      $total_rows = file_get_contents('https://127.0.0.1:8443/example.html?shopId=121');
    $total_rows = $this->getUrl('https://127.0.0.1:8443/example.html', '121');
    print_r($total_rows);
    echo 'end';
}

function getUrl($url, $shopId ='') {
    $post = 'shopId=' . $shopId;

    $ch = curl_init();
//      curl_setopt($ch, CURLOPT_PORT, 8443);  
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//      curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/../../files/cacert.pem");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);     
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//        curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Secure Content-Type: text/html; charset=UTF-8")); 
//        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: 127.0.0.1:8443'));

    $ret = curl_exec($ch);
    curl_error ($ch );
    curl_close($ch);
    return $ret;
}
4

1 回答 1

1

简而言之:这不是网络的工作方式。

当您进入https://example.com浏览器并在那里登录时,您的浏览器会收到一个 cookie 并登录。

当你https://example.com从一个完全不相关的服务器(即使该服务器在同一台机器上)获取 URL 时,它是来自新客户端的完全不同的请求,你将相应地不会登录。就像你打开另一个浏览器一样(例如,Firefox 和 Chrome);您不会自动登录两者。

于 2012-08-24T14:26:28.203 回答