IE作为客户端,
ServerSocket作为服务端,
输出浏览器的请求消息
package source_code;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class IE_ServerSocket {
public static void main(String[] args) throws IOException {
/*方法说明:
*自定义服务端,使用IE作为客户端,
*看看IE(客户端)到底给我(服务端)发了什么请求!
*/
ServerSocket ss = new ServerSocket(9090);//侦听9090端口
Socket s = ss.accept();
System.out.println(s.getInetAddress().getHostAddress()+".....connected");
//把IE发送给服务端的数据全打印出来
//看看浏览器中输入网址后,回车
//http://127.0.0.1:9090/myweb/iframe.html
//到底给服务端发的是啥?
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String(buf,0,len);
System.out.println(text);
//给客户端一个反馈信息(读取资源也同样可以)。
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println("<font color='red' size='7'>欢迎光临本站</font>");
//显示在IE的document里面
s.close();
ss.close();
}
}
================================
第1行是:请求行
请求方式 /myweb/iframe.html 请求的资源路径 http协议版本。
第2段是:请求消息头 . 属性名:属性值
第3段是:空行
第4段是:请求体
GET /myweb/iframe.html HTTP/1.1
Accept: application/x-shockwave-flash,
image/gif, image/jpeg, image/pjpeg, image
/pjpeg, application/vnd.ms-excel,
application/vnd.ms-powerpoint, application/msw
ord, application/xaml+xml,
application/x-ms-xbap, application/x-ms-application, */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0;
YYGameAll_1.2.167057.92; Windows
NT 5.1; Trident/4.0; IEShow Toolbar;
IEShow herowyToolBar; .NET CLR 2.0.50727; .
NET4.0C)
Accept-Encoding: gzip, deflate
Host: 127.0.0.1:9090
Connection: Keep-Alive
Socket客户端模拟浏览器,
伪造请求消息发送给Tomcat服务端,
输出应答消息
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.Socket;
/*
运行这个前,要先运行tomcat服务器
用Socket客户端模拟浏览器:
通过伪造请求行+请求消息头+空行+请求体
对Tomcat服务器发起请求!
并且输出Tomcat服务器返回的应答消息
*/
public class FakeIE_Tomcat {
public static void main(String[] args) throws Exception {
Socket s=new Socket("127.0.0.1",8080);
PrintWriter out=new PrintWriter(s.getOutputStream(), true);
out.println("GET /myweb/iframe.html HTTP/1.1");
out.println("Accept: */*");
out.println("Accept Encoding: gzip,deflate");
out.println("Host: 127.0.0.1:8080");// 一个IP上可能有多个服务器
out.println("Connection: close");
out.println("");//换行,即请求消息头和消息体的分割
out.println("");//消息体
//读取tomcat服务器返回的信息(应答消息)
InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
}
}
//下面就是tomcat服务器响应请求后,返回的信息!(应答消息)
/*
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"538-1384427776000"
Last-Modified: Thu, 14 Nov 2013 11:16:16 GMT
Content-Type: text/html
Content-Length: 538
Date: Thu, 14 Nov 2013 11:17:59 GMT
Connection: close
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>
这里面是title
</title>
</head>
<body>
<font color="#000099" size="+3">演示iframe标签(画中画,页面中挖个洞)</font>
<iframe src="1.html" height="300",width="500">
如果看到这些文字,说明您的浏览器不支持iframe标签
</iframe>
<iframe src="www.baidu.com/xxx.js" height="0",width="0">
如果iframe的高宽都被设置为0,
并且访问地址是一个js脚本,就可能实现一个恶意代码!
</iframe>
</body>
</html>
*/