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