跨域以及解决跨域的几种方式

跨域以及解决跨域的几种方式,第1张

跨域是指浏览器允许向服务器发送跨域请求,从而克服Ajax只能 同源 使用的限制。

同源策略 是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议 + 域名 + 端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

常见的跨域场景:

对于简单请求,浏览器会直接发出CORS请求,具体的就是在头信息中,增加一个 Origin 字段

非简单请求是那种对服务器有特殊要求的请求,譬如 put delete 方法,或者 Content-Type 字段类型是 application/json 的,非简单请求在正式通信前,会增加一次请求,称为预检请求,也就是 options 方法。

浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的 XMLHttpRequest 请求,否则就报错。

与简单请求不同的是, option 请求多了2个字段:

Access-Control-Request-Method :必须字段,用来列出浏览器的CORS请求会用到哪些HTTP方法。

Access-Control-Request-Headers :该字段是一个逗号分隔的字符串,指定浏览器CORS请求会额外发送的头信息字段。

服务器收到"预检"请求以后,检查了 Origin 、 Access-Control-Request-Method 和 Access-Control-Request-Headers 字段以后,确认允许跨源请求,就可以做出回应。

表明服务器支持的所有跨域请求的方法。

表明服务器支持的所有头信息字段,不限于浏览器在"预检"中请求的字段。

表示是否允许发送认证信息(Cookie)。

指定本次预检请求的有效期,单位为秒,允许缓存。在缓存期间,不用发出另一条预检请求。

1需求

了解服务端如何处理http请求,了解基本的处理流程

2实战

处理http请求分为7个步骤

21 Tcp连接

建立一条tcp链接,(若之前不存在持久链接keep-alive),把客户端的ip和port,服务端的ip和port数据放到web服务器连接表中。服务器随时监听链接表中的链接,看有没有数据变化

22 接收http请求

一旦我们发送http请求了,这条tcp链接就开始工作了。因为web服务器链接表中有许多链接需要被处理,处理的方式有单线程,多线程这些(这些涉及操作系统的知识)。

23 处理http请求

处理的过程大致是把请求的信息解析出来,如下图

 

24 访问资源

访问资源可以是访问静态资源,这个就直接根据url地址去服务器里找就好了。

访问动态资源的话要经过一个叫cgi的东西,再用服务端脚本处理,再返回给前端。如下图所示

25 构建响应

要是找到资源,则构建响应信息,包括响应的对象类型,长度,状态码。

另一个情况是重定向响应,就是直接返回一个重定向,客户端看到之后,立刻再向重定向的地址发起请求。重定向的响应的状态码一般是3xx。

26 发送响应

把构建的响应发送给客户端

27 记录日志

服务端对这个请求响应过程进行记录。(另外专门再讲)

 

3总结

以上是服务端处理http请求的大致过程。能让大家有个大致轮廓,当然里面有很多细节的知识没讲到,要另外查询资料并学习

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 跨域以及解决跨域的几种方式

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情