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代码:
html>
从服务器获取或设置Header的值Header中会话参数(SID)的获取和设置
GET SID
SET SID
//获取服务器上的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);
}
});
}
注:Set-Cookie:为JavaEE里面设置HttpOnly的形式,JavaScript无法获取,更多参见:http://en.wikipedia.org/wiki/HTTP_cookie#HttpOnly_cookie