從服務器獲取或設置Header的值

Servlet代碼: javascript

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代碼: html

<!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 java

相關文章
相關標籤/搜索