什么是域
域指的是域名
什么是跨域
域名,端口,协议。只要有一个不同即是跨域,
跨域指的是浏览器在同源策略下浏览器不能执行其他网站的脚本
跨域的本质是浏览器的一种安全策略
只有在浏览器上才有跨域限制
如何解决跨域问题
-
使用jsonp(需要前后端配合才能实现)
-
前端使用 script标签的scr属性
-
后端需要使用res.jsonp返回数据
- jsonp只在GET请求下使用,POST请求不能使用
** 2.jsonp原理**
Ajax请求受到同源策略影响,不允许进行跨域请求,而script标签scr属性中的链接可以访问跨域的js脚本,所以利用这个特性可以获取到跨域的数据
2.使用代理跨域
原理:使用代理请求服务器然后返回给前端来绕过同源策略
nodejs中使用http-proyx-midleware中间件代理实现跨域
后端也可以使用nginx
前端还可以使用webpack实现代理
使用方法
//安装http-proyx-midleware插件
在项目根目录打开命令行工具
输入安装
npm install http-ptoyx-midleware -S
//引入模块
var app = require('express');
var proyx = require('http-proyx-midleware')
//注册
app.use('/user',proyx{
target:"http://xxx"//接口地址
changeOrigin:true
})
3.正向代理和反向代理
1.正向代理
正向代理中服务器并不知道是那个客户端发起的请求因为他的所有请求都是来自代理服务器,所以说在正向代理中客户端对于服务器来说是不可见的
2。反向代理
反向代理与正向代理相反,反向代理不需要在客户端去设置,在反向代理的过程中客户端只需要请求这个代理服务器,而代理服务器根据相应的设置去请求相应的服务器,因此在反向代理中服务器对于客户端来说是不可见的
CORE (跨域资源共享)只需要后端工程师来完成
原理:在请求头中写入说明此接口为安全的语句,使得浏览器的同源策略能够放行