从服务器获取或设置Header的值

Servlet代码:

package com.demo.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Services")
public class Services extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public Services() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setHeader("SID""sid_" + Math.round(Math.random() * 1000));

		// 客户端无法获取此值
		response.setHeader("Set-Cookie""WQERQWITQRUWORE");

		response.getWriter().print("{\"msg\":\"ok\",\"code\":0}");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		String sid = request.getHeader("SID");
		System.out.println("SID:" + sid);

		String xxx = request.getHeader("XXX");
		System.out.println("XXX:" + xxx);

		response.getWriter().print("{\"msg\":\"ok\",\"code\":0}");
	}
}

HTML及JavaScript代码:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>从服务器获取或设置Header的值</title>
    <script type="text/javascript" src="lib/jquery-1.7.2.min.js"></script>
</head>
<body>
<h3>Header中会话参数(SID)的获取和设置</h3>
<br/>
<button type="button" onclick="get()">GET SID</button>
<br/>
<br/>
<button type="button" onclick="set()">SET SID</button>
<br/>
<br/>
<div style="border:1px solid #ccc;padding:20px;">
	<span id="data"></span><br/>
	<span id="status"></span><br/>
	<strong><span id="sid"></span></strong>
</div>
<script type="text/javascript">
	//获取服务器上的Header值
    function get() {
        $.get('Services', { },
                function (data, textStatus,resObj{
                    $('#data').html(data);
                    $('#status').html(textStatus);
                    
                    //获取自定义header值
                    $('#sid').html(resObj.getResponseHeader('SID'));
                    
                    //无法获取Set-Cookie的值
                    //alert(resObj.getResponseHeader("Set-Cookie"));
                    
                    //获取所有header值
                    //console.log(resObj.getAllResponseHeaders());
                    /*
                     * erver: Apache-Coyote/1.1
                     * SID: sid_786
                     * Content-Length: 21
                     * Date: Tue, 15 Apr 2014 14:23:48 GMT
                     */
                },'text');
    }
	
	//-----------------------------------------------------------
    
	//设置Header值,并发送到服务器
   	function set(){
	  	$.ajax({
	        url: "Services",
	        type: "POST",
	        //1-参数模式
	        headers: {
	            "SID" : "10086"
	        },
	        beforeSend: function(reqObj, settings{
	        	//2-动态设置
	        	reqObj.setRequestHeader('XXX''VVV');
	        },
	        data: {},
	        error: function(resObj, textStatus, errorThrown{
	           //TODO
	        },
	        success: function(data, textStatus, resObj{
	        	alert(resObj.responseText);
	        }
	    });
   	}
</script>
</body>
</html>

注:Set-Cookie:为JavaEE里面设置HttpOnly的形式,JavaScript无法获取,更多参见:http://en.wikipedia.org/wiki/HTTP_cookie#HttpOnly_cookie

http://my.oschina.net/tsai/blog/222865

猜你喜欢

转载自m635674608.iteye.com/blog/2313855