2011-10-19周三

 

WEB客户端发送给WEB服务器的HTTP请求消息分为三个部分:

请求行 POST /demo/login HTTP/1.1

请求消息头

消息正文(也叫实体内容) username=xxxx&password=1234

HTTP请求消息的请求行包括请求方式、资源路径和HTTP协议版本:

       GET /it315/servlet/RequestURI?param1=a&param2=b HTTP/1.1

getMethod方法返回HTTP请求消息中的请求方式。

getRequestURI方法返回请求行中的资源名部分。

getQueryString 方法返回请求行中的参数部分。

getProtocol方法返回请求行中的协议名和版本。

getContextPath方法返回请求资源所属于的WEB应用程序的路径。

getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。

getPathTranslated方法返回URL中的额外路径信息所对应的资源的真实路径。

getServletPath方法返回Servlet的名称或Servlet所映射的路径。  

请求头实例

Enumeration headerNames = request.getHeaderNames();

while(headerNames.hasMoreElements())

{

      String headerName = (String)headerNames.nextElement();

      out.print(headerName + " : " + request.getHeader(headerName) + "<br>");

      /*如果要考虑同一个请求头名可能出现多次,

      那么应该用下面的代码段代替上面一行程序代码*/

      /*Enumeration values = request.getHeaders(headerName);

      while(values.hasMoreElements())

       {

           out.print(headerName + " : " + (String)values.nextElement() + "<br>");

      }*/

利用Referer请求头阻止“盗链”

String referrer = request.getHeader("referer");

String sitePart = "http://" + request.getServerName();

if(referrer!=null && referrer.startsWith(sitePart))

{

      //处理正当的下载请求,这里只进行示意

      out.println("dealing download ...");

}

else

{

      //非法下载请求跳转到本站的下载说明页

      RequestDispatcher rd = request.getRequestDispatcher("/down.html");

      rd.forward(request,response);

}

利用Referer请求头
隐藏JavaScript源码

String referrer = request.getHeader("referer");

String sitePart = "http://" + request.getServerName();

if(referrer!=null && referrer.startsWith(sitePart))

{

      //向客户端输出javascript的document.write(...)语句

      out.println(

           "document.write('假设这是很多重要的Javascript代码的执行结果');");

}

使用GET传递参数

在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET。

如果网页中的<form>表单元素的method属性被设置为了“GET”,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。

使用GET请求方式给WEB服务器传递参数的格式:

      http://www.it315.org/counter.jsp?name=zhangsan&password=123

使用GET方式传送的数据量一般限制在1KB以下

使用POST方式传递

POST请求方式主要用于向WEB服务器端程序提交FORM表单中的数据。

POST方式将各个表单字段元素及其数据作为HTTP消息的实体内容发送给WEB服务器,传送的数据量要比使用GET方式传送的数据量大得多。 

<form>表单元素的enctype属性用于指定浏览器使用哪种编码方法将表单中的数据传送给WEB服务器,该属性可以有两种取值:

application/x-www-form-urlencoded

multipart/form-data

POST请求消息的格式:

POST /counter.jsp HTTP/1.1

referer: http://localhost:8080/Register.html

content-type: application/x-www-form-urlencoded

host: localhost:8080

content-length: 43

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值