前端解决跨域问题的常见方法及优缺点对比
来源:http://www.tudoupe.com时间:2022-05-22
解决跨域问题的方案
- 一、什么是跨域?
- 什么是同源策略?
- 二、常见的跨域场景
- 三. 解决共同的交叉领域关切问题
- 1.JSONP跨域
- (一)原理
- (二)示例
- 前端代码:
- 后端代码:
- (三) JSONP的利弊
- 2. CORS是跨部资源分享。
- (一) CORS究竟是什么?
- (二) 基本和复杂的要求
- 简单请求
- CORS需要的反应信头字段,从Access-Control-Allow-Origin开始。
- 非简单请求
- 预检请求
- 预检请求的回应
- (三)示例
- 前端代码:
- 后端代码:
- (四) CORS的利弊
- 3.Cross-domain Nodejs 中件剂
- (一)原理
- (二)示例
- 前端代码:
- 中间件服务器代码:
- (三) nodejs中间剂的长处和短处
一、什么是跨域?
交叉域是向服务器发送跨域请求的浏览器序列,绕过Ajax只能在同一来源使用的限制。
什么是同源策略?
同源技术是一项合同。Netscape于1995年揭开观众的栏目。这是浏览器的主要和最基本的安全功能。如果没有同侪办法,结构波动者容易受到XSS、CSFR和其他攻击。“相同性”一词是指“协议+域名+端口”是相同的。两个独立的域名甚至可以指同一IP地址。也非同源。
同一技术限于下列行为:
- Cookie、 本地系统、 索引DB 不存在 。
- 没有无障碍的国防部或联署材料。
- 无法发送AJAX请求书。
二、常见的跨域场景

三. 解决共同的交叉领域关切问题
1.JSONP跨域
(一)原理
jsonp理论是利用它。
(二)示例
前端代码:
1)原生JS实现
后端代码:
(三) JSONP的利弊
效益:它简单、兼容,可用于克服共同浏览器的跨区域数据存取问题。
缺点包括:只支持 " 获得 " 办法、限制和不安全。
2. CORS是跨部资源分享。
(一) CORS究竟是什么?
CORS, 或“ 跨域资源共享” 是 W3C 标准, 允许浏览器将 XMLHttp 请求查询提交到跨域服务器, 绕过 AJAX 只能用于同一源码的限制 。
它通知客户端, 如果浏览器支持 CORS, XMLHtp 请求将允许开始跨域请求, 向服务器提供特定的页眉[ Access- control- Allow- Origan] 。
(二) 基本和复杂的要求
如果以下两项要求同时得到满足,这是一项直截了当的要求。
- 使用下列方法之一:
- head
- get
- post
- 请求的Heder是
- Accept
- Accept-Language
- Content-Language
- Content-Type:
只有三种可能的值:应用程序/x-ww-form-urlencodd、多部分/form-data和文本/plan。
未能同时满足上述两项要求并不是简单的要求。 浏览者对这两种要求加以区分。
简单请求
浏览器直接发送 CORS 请求, 以获取基本请求。 发件人字段会被添加到头条消息中 。
上面页眉信息中的源字段用于识别请求来源(协议+域名+端口)。服务器决定是否允许基于此值的请求。
CORS需要的反应信头字段,从Access-Control-Allow-Origin开始。
1. 选择进入-控制-无限制组织
此值是请求时的原始字段值, 或表示接受任何域名请求的 a* 。
(2) 可选择的获取控制- allow-Credicials(控制- allow-Credicials)
其值是一个布尔值, 显示是否允许发送 cookie 。 默认情况下, Cookie 不包含在 CORS 请求中。 当设定为 True 时, Cookie 可以包含在请求中, 并随同发送到服务器 。
此值只能设定为 True, 如果服务器不通过浏览器提供 Cookie, 则字段应该删除 。
3) 任选的存取控制 - - - - - - - - - - - - - - - - 专家负责人
CORS请求时,XMLTtprequest 对象上的 gattResponse Header () 函数只能获取六个基本字段: 缓存控制、 内容语言、 内容类型、 过期、 最后修改 和 Praggma 。如果你想接收其他字段,请到这里。必须具体说明访问控制 - 开发 - 希拉德 。上面的例子指定,Foobar 字段的值由 GetResponse Chainer (“Foobar ”) 返回 。
非简单请求
非简单请求是具有某些服务器需求的请求。类似于要求PUT或DELETE。相反,Fontent-Type 字段类型是应用程序/json。这不是一个简单的 CORS 请求 。会在正式通信之前,包含 HTTP 查询请求 。它被称为"预检"请求
预检请求
请求书由备选方法预先筛选,表明请求书用于询问,请求信头信息的关键领域是来源,表明请求来自何方,除了Origan外, " 预先筛选 " 请求还包括两个额外领域。
(1) 选择获取-控制-请求-方法
列出用于向浏览器(如PUTs)发送 CORS 请求的 HTTP 方法 。
2) 可选的存取控制请求 -- -- 请求 -- -- 希伯来人
此字段是一个以逗号分隔的字符串, 显示浏览器 CORS 想要额外的信头字段, 如 X- Custom- checker 。
预检请求的回应
在收到服务器提出的预先筛选请求后,小组在视察了原产地、存取控制-请求-方法以及存取-存取控制-请求-目的字段后,得以了解更多有关情况。确认允许跨源请求,就可以做出回应。
HTTP反应中与CORS有关的其他领域,除了重要的出入控制-Allow-Oligin外,还有:
(1) 选定的存取-控制- allow-方法
其值是一个以逗号分隔的字符串, 给出所有由服务器支持的跨域请求的方法。 请注意, 返回是所有支持的方法, 而不仅仅是浏览器要求的方法 。
2)Access-Control-Allow-Headers
如果浏览器要求增加访问-控制-请求-希德斯数据,那么利用因特网作为建立更好环境的工具是可行的。需要获取-控制-控制-Allow-headers字段。也是带有逗号的绳子显示服务器的所有头信息字段。不限于浏览器所需的“预检”字段。
3) 可选择的存取-控制- allow-Credits
当提出基本要求时,字段具有相同的含义。
4) 任选: 进入控制-Max-Age
此预屏请求的有效期以秒计 。
(三)示例
前端代码:

后端代码:
(四) CORS的利弊
CRS支持所有形式的HTTP请求,是跨域HTTP请求的主要解决办法。
缺点:浏览器需求高,与旧浏览器不兼容
3.Cross-domain Nodejs 中件剂
(一)原理

同一性战略是浏览器必须遵循的规范,尽管服务器向服务器提出的要求不需要同性战略。
- 客户请求为代理服务器所接受。
- 请求由代理服务器发送到服务器 。
- 服务器响应数据由代理服务器接收 。
- 回复将通过代理服务器发送给客户端 。
(二)示例
用节点+快递+ http-proxy-middleware, 建立一个代理服务器 。
前端代码:
中间件服务器代码:
(三) nodejs中间剂的长处和短处
效益包括减少网络负担、节省带宽和自动数据分类。
缺点:易受攻击
下一篇:前端面试常见的问题是什么
相关新闻
- 2023-04-16 2台电脑怎么共享(2台电脑怎么共享
- 2023-04-16 主板检测卡代码(电脑主板检测卡代
- 2023-04-16 dnf未响应(dnf未响应老是上不去)
- 2023-04-16 ppoe(pppoe拨号上网)
- 2023-04-16 网速不稳定(网速不稳定是路由器的
- 2023-04-16 wds状态(Wds状态成功)
- 2023-04-16 光标键(光标键不动了怎么办)
- 2023-04-16 电脑提速(电脑提速100倍的方法)
- 2023-04-16 切换用户(切换用户怎么切换回来
- 2023-04-16 数据包是什么(产品数据包是什么
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
