HTTP协议知识

浏览器中输入URL到完整渲染出来,HTTP过程如下图:

这里写图片描述


HTTP协议的三次握手

在客户端和服务端之间发送请求和返回响应的过程,是需要进行TCP connection。

TCP(Transmission Control Protocol) 传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 用来规由于网络延迟等问题而造成的不必要开销。


URI, URL, URN
URI 统一资源标志符,包含URL 和URN

URL 统一资源定位符, (访问http://www.baidu.com 默认访问的端口是80端口)

URN 永久同意资源标志符


HTTP跨域请求资源:

如何设置响应头才可以让跨域请求资源生效?

方式一:

// node
response.writeHead(200, {
    "Access-Control-Allow-Origin" : "*"
})

注释: 在跨域请求中,实际数据是已经返回了,只不过浏览器的同源策略解析数据内容,发现不允许将其拦截。

方式二:

<script src="http://www.google.com"></script>

浏览器不会限制img,script元素中的src对应的路径发送的请求和返回值。


在设置响应头

response.writeHead(200, {
    "Access-control-Allow-Origin" : "*"
})

其中” * “表示所有服务的请求都被允许跨域,但是这样太不安全。所以应当设置成当前确定的域。
比如:

response.writeHead(200, {
    "Access-control-Allow-Origin" : "http://www.baidu.com"
})

CORS预请求
自定义请求头在跨域的时候,也是不被允许的。
请求头:

headers: {
    "X-Test-Cors": "123"
}

报错如下:
这里写图片描述

解决方法:

// 在响应头中设置
response.writeHead(200, {
    "Access-Control-Allow-Headers": "X-Test-Cors"
})

会发现页面的请求中多了一个请求,这个请求的方法是OPTIONS。目的是为了去获取浏览器的认可。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/mangoyiy/article/details/80896412