Home >php教程 >php手册 >PHP http与https之间互转

PHP http与https之间互转

WBOY
WBOYOriginal
2016-06-13 09:38:491235browse

在 J2EE 中,对于https和http的不同请求,Web容器会生成两个不同的session对象;因此,如果在同一个Web应用中只有部分页面使用SSL,要保证使用SSL的页面与不使用SSL的页面间的相互切换(也就是https请求与http请求间的切换)会话保持连续,那么可以通过在访问的URL中传递sessionId来实现,也就是说在进入或退出https的URL上绑定一个sessionId,比如从http切换到https时,URL为:https://xxx/login.do;jsessionid=,从https切换到http时为:http://xxx/xxx.do;jsessionid=。这样Web容器会优先根据这个sessionid获取session对象,而不是生成新的sessionid,就可以保证http和https切换时会话不变(该方法在Tomcat上验证过)。

由于在URL上绑定的sessionid容易被窃取,为了保证会话不被劫取,会话认证时需要结合客户端IP,也就是当用户登录成功后,通过session.setAttribute("clientIp",request.getRemoteAddr())保存客户端的IP地址,在后继认证会话的合法性时必须判断客户端的IP是否是原先存储在session对象的clientIP属性的客户端IP,如果不是则该会话是非法会话。

http直接跳转为https,重定向一下就可以了。用php就更简单了:

<?php
	header("Location:https://www.bkjia.com");
?>

当访问 http 时,跳 https:

<?php
//http转化为https   
if ($_SERVER["HTTPS"] <> "on")
{
	$xredir="https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
	header("Location: ".$xredir);
}
?>  

当访问 https 时,跳 http:

<?php
//https转化为http   
if ($_SERVER["HTTPS"] == "on")  
{  
	$xredir="http://".$_SERVER["SERVER_NAME"]. $_SERVER["REQUEST_URI"];  
	header("Location: ".$xredir);  
}   
?>

在网页开头包含上面代码即可。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn