网址–>本地缓存–>host文件–>IP/ARP–>DNS–>IP–>网关–>路由–>对方主机–>访问80、443–>建立连接(三次握手)–>HTTP数据包–>数据响应–>.html文件–>.php文件–>数据库–>运行结果
url:统一资源定位符(网址),用来告诉Web容器,浏览器所请求资源(文件)的路径。
schema://login:password@address:port/path/to/resource/?query_ string#fragment
schema:协议名称
login:用户名
password:密码
address:IP地址
port:端口号
path/to/resource:资源路径
query_ string:查询的字符串
fragment:锚点,实现页面内定位
匿名访问时没有login:password。
URL中允许出现的字符是有限制的,URL中path开始允许直接出现A-Z a-z 0-9、半角减号(-) 、下划线句点(.) 、波浪号(~) 。其他字符均会被百分号编码,如:
# %23
[ ](空格) %20
使用Bp抓包,设置服务器代理:
Bp抓包结果:
HTTP请求由请求行、请求头、请求正文三个部分组成。
方法:GET
资源路径: /php/test.php
协议/版本:HTTP/1. 1
状态代码:200
状态代码:
100~199
信息性状态码
200~299
成功状态码
300~399
重定向状态码
400~499
客户端错误状态码
500~599
服务器错误状态码
从请求报文第二行开始到第一个空行为止之间的内容,其中包含HTTP响应的重要字段。
Host:主要用于指定被请求资源的Internet主机和端口号;
User-Agent:浏览器指纹;
Referer:包含一个URL,代表当前URL的上一个URL
Cookie:记录请求者的身份认证信息;
Accept-Charset:用于指定客户端接收的字符集;
Content-Type:用于向接收方指示实体的介质类型(数据类型);
Content-Length:用于指明实体正文的长度,以字节方式存储的十进制数字来表示;
Last-Modified:用于指示资源的最后修改时间和日期
服务器返回资源的内容,即浏览器接收到的HTML代码。
使用Telnet客户端,连接服务器(telnet IP地址 端口号),发送GET请求:Ctrl+],开启回显:
发送http请求
GET 请求路径 协议/版本
HOST: IP地址
test.php:
var_dump($_POST);
?>
测试结果:
抓包结果:
响应报文由响应行(状态行)、响应头、响应正文三部分组成。
协议/版本: HTTP/1.1
状态代码: 200
描述短语: 0K
第二行开始到第一个空行为止的所有内容,其中包含了关于HTTP响应的重要字段。
Server:服务器指纹;
Set-Cookie:向浏览器端设置Cookie
Last- Modified:服务器通过这个头信息告诉浏览器,资源的最后修改时
间;
Content-Length:正文的长度;
Location:重定向目标页面(header(Location:重定向路径)
);
Refresh:服务器通过Ref resh头告诉浏览器定时刷新浏览器。
服务器返回资源的内容,即浏览器接收到的HTML代码。
同源策略是禁止JavaScript进行跨域访问的安全策略,它也是浏览器沙盒环境所提供的一项制约。浏览器可以同时处理多个网站的内容,其典型方法为使用标签页或iframe等。
同源策略的保护对象不仅仅是iframe 内的文档。比如,实现Ajax时所使用的XMLHttpRequest 对象能够访问的URL也受到了同源策略的限制。
一个index.html页面,一个iframe.html页面,index页面引入iframe标签,内嵌iframe.html页面,路径设置为:http://localhost/文件路径,通过js事件获取iframe.html页面的值。
index.html:
<html>
<head>
<title>跨iframe的读取试验title>
head>
<body>
<iframe name="iframe1" width="300" height="80" src="http://localhost/php/tongyuan/iframe.html">iframe>
<input type="button" onclick="go()" value="获取内层iframe的内容为:">
<script>
function go(){
try{
var x = iframe1.document.form1.content.value;
document.getElementById('out').innerHTML = x;
}catch(e){
alert(e.message);
}
}
script>
<span id="out">span>
body>
html>
iframe.html:
<html >
<head>
head>
<body>
<form name="form1">
iframe 的内层:<br />
<input type="text" name="content" value="内层iframe的内容">
form>
body>
html>
localhost访问:成功读取