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
相关推荐
例如,如果我们自定义了一个Header名为`Custom-Name`,并且在反向代理服务器(如Nginx或Apache)中设置如下: ```bash proxy_set_header Custom-Name "xxxxx"; ``` 在PHP代码中,我们应当通过以下方式来获取这个...
这些元数据可以帮助服务器更好地处理请求,例如选择合适的响应内容类型或设置缓存控制策略等。常见的HTTP请求头包括但不限于:`Accept`、`Host`、`Referer`、`User-Agent`等。 #### 二、JSP与HttpServletRequest...
它们共同作用,确保每次请求都从服务器获取最新版本的文件,而不是使用本地缓存: ```php header("Pragma : No-cache"); header("Expires : 0"); header("Cache-Control : no-cache, must-revalidate"); ``` 这些...
在Android开发中,HTTPClient是常用的网络通信库之一,用于与服务器进行交互,获取或发送数据。本示例主要讲解如何使用HTTPClient访问服务器并获取JSON格式的数据。JSON(JavaScript Object Notation)是一种轻量级...
若要在向上游服务器转发请求时添加或修改请求头,我们需要使用`proxy_set_header`指令。这通常在Nginx作为反向代理时使用。 例如,假设我们想在请求头中添加一个名为`X-Api-Version`的字段,其值为`v1`,可以在...
在这个例子中,我们使用了HTTP Proxy和JsonReader来从服务器获取数据。 ```javascript var storeFatList = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'auditUsr.action' }), reader: new ...
### Android Cookie 获取与设置以及 WebView 的 Cookie 同步 在 Android 开发中,Cookie 的管理和同步对于维护用户会话状态至关重要。特别是在使用 HttpClient 发起网络请求时,保持客户端与服务器端 Session 的...
本文将详细介绍如何使用Java从HTTP请求中获取Header和Body。 首先,让我们了解HTTP请求的基本结构。一个HTTP请求由以下几部分组成: 1. 请求行(Request Line):包括HTTP方法(GET、POST等)、URL和HTTP版本。 2....
在Android开发中,获取Web服务器端的Session并进行登录验证是一项常见的任务,特别是在构建混合式应用或者需要与Web服务紧密交互的应用中。本篇将详细阐述这个过程中的关键知识点。 一、理解Session Session是Web...
我们可以通过StatusDescription属性获取状态码的描述,而StatusCode属性则直接返回状态码的整数值。 为了获取更详细的HTTP头信息,可以遍历HttpWebResponse对象的Headers属性,这是一个NameValueCollection类型的...
在JavaScript中,Ajax技术常用于实现页面的异步数据交互,而设置和获取自定义header信息则是Ajax请求中一个重要的功能。以下是对该主题的详细解释: ### 1. 设置自定义Header信息 #### 1.1 使用`beforeSend`回调...
跨域资源共享(CORS,Cross-Origin Resource Sharing)是一种机制,允许Web应用从不同的源(比如不同的域名、协议或端口)获取资源。由于浏览器的安全策略,通常不允许这种跨域请求,但CORS通过添加特定的HTTP头部...
开发者可以通过简单的API调用,快速设置或获取认证头,使得在前端代码中处理认证变得更加简单和规范化。 例如,使用`auth-header`库设置一个Basic Auth的认证头: ```javascript const authHeader = require('auth...
总的来说,通过Nginx服务器获取大文件MD5值,结合file-md5模块,可以在不影响服务器性能的前提下,提供文件完整性验证的手段。而大文件下载优化则可以帮助提高服务质量和用户体验。对于大型的、高流量的网站,这些...
当用户再次访问同一服务器时,浏览器会将这些Cookie回传给服务器,以便服务器识别用户身份、保存用户偏好设置或跟踪用户行为。 在Qt中,我们可以使用QNetworkAccessManager和QNetworkCookieJar类来处理Cookie。...
获得请求头的各种参数信息jsp代码: ...获取接受客户提交信息的页面: /004.jsp 接受客户提交信息的长度: -1 ...获取头文件中指定头名字的全部值的一个枚举: JSESSIONID=7278C051AADA7370A6DB7492CDD13984
- `http_response_code()`:获取或设置HTTP响应状态码。 ### 结论 掌握`headers_list()`函数的使用是编写高效、可维护的PHP代码的关键之一。通过它可以查看和调试HTTP头部设置,有助于理解应用程序的行为,特别是...
- `header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate')`: 这些设置可以防止页面被缓存,确保每次请求都获取最新的内容。 - `header('Expires: Mon, 26 Jul 1997 05:00:00 GMT')`: 设置过期...
请求头则由多个名称-值对组成,它们提供了请求的上下文信息,如浏览器能力、请求内容格式和用户偏好。同样,响应头也包含类似信息,但侧重于响应的元数据,如状态、内容类型、缓存策略等。 总的来说,理解并熟练...
这些Header信息对于确保请求能够按照预期被服务器正确解析至关重要。 #### 2. Golang中的HTTP客户端 Go标准库中的`net/http`包提供了强大的HTTP客户端功能,使得开发者可以轻松构建HTTP请求并获取响应。以下是一个...