Cookie常用属性 Session使用介绍 URL组成结构 HTTP地址介绍 获取本机地址
- 2016-11-06 19:55:00
- admin
- 原创 3278
一、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