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