Cookie常用属性 Session使用介绍 URL组成结构 HTTP地址介绍 获取本机地址

2016-11-06 19:55:00
admin
原创 3278
摘要:Cookie使用介绍 Session使用介绍 URL组成结构 HTTP地址介绍 获取本机地址

一、Cookie使用介绍

1、Domain,所属域名;

2、Path,所属路径;
3、Expires,过期时间,GMT时间;
4、Max-Age,过期时间,建议使用;

5、Secure,只有使用SSL,服务端和客服端之间才能成功传送Cookie;
6、HttpOnly,设置了HttpOnly属性,JS脚本将无法读取Cookie,这样能有效地防止XSS攻击;


JSESSIONID的HttpOnly设置,默认开启:

1、useHttpOnly="true" on Context element in a web application;

2、useHttpOnly="true" in the global CATALINA_BASE/conf/context.xml;


Cookie注意事项:

1、不设置Path,浏览器会设置Path为URL最后一个斜杠前面的内容;

2、不设置Cookie有效期,则有效期是Session,浏览器关掉Cookie才失效;

3、同域名情况下,浏览器禁止HTTP站点读取或覆盖HTTPS站点同名Cookie;


二、Session使用介绍

1、如果会话不存在,request.getSession会创建会话,Cookie有效期默认等于会话时间;

2、HttpSession使用JSESSIONID进行查找,实现类org.apache.catalina.session.StandardSession;

3、HttpSession使用ConcurrentHashMap存储数据,所以线程安全;

4、会话过期时间一定要设置,最近访问时间加上过期时间后会话过期;


<!-- session时长以分钟为单位,cookie时长以秒为单位,只对自动生成的cookie有效 -->
<session-config>
<session-timeout>120</session-timeout>
<cookie-config>
<max-age>7200</max-age>
</cookie-config>
</session-config>


三、URL组成结构

1、URL规范:https://www.rfc-editor.org/rfc/rfc1738

2、URI规范:https://www.rfc-editor.org/rfc/rfc3986

3、URL、URI与用户输入保持一致,除了客户端有处理井号,井号一般不会被传到后台;

4、两种Path与用户输入不完全一致,权限判断使用ServletPath,只有他经过标准化处理;


URL组成结构:

URL url = new URL(URLDecoder.decode(urlstr, "UTF-8"));
System.out.println(url.getHost());

System.out.println(url.getPort());
System.out.println(url.getUserInfo());
System.out.println(url.getQuery());


URL相关接口:

URL=http://host:port/myapp/business/queryInfo.do?name=feinen

httpRequest.getMethod(),GET
httpRequest.getRequestURL(),http://host:port/myapp/business/queryInfo.do

httpRequest.getRequestURI(),/myapp/business/queryInfo.do
httpRequest.getContextPath(),/myapp
httpRequest.getServletPath(),/business/queryInfo.do
httpRequest.getQueryString(),name=feinen


四、HTTP地址介绍

request.getRemoteHost(),客户端地址;
request.getRemoteAddr(),客户端地址;
request.getRemotePort(),客户端端口;
request.getLocalAddr(),本机服务地址;
request.getLocalPort(),本机服务端口;
request.getServerName(),http报文中获取的服务器地址;
request.getServerPort(),http报文中获取的服务器端口;
request.getScheme(),http或https;


使用nginx代理时,需要设置以下请求头,然后应用从请求头获取客户端地址:

1、proxy_set_header X-Real-IP $remote_addr,设置客户端地址到请求头;
2、proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for,增加客户端地址到请求头,最近添加的在最后面;


五、获取本机地址

代码下载:GetLocalIP.java

发表评论
评论通过审核之后才会显示。