跨域及解决方案
什么是跨域?
跨域是指一个网页向另一个url请求如果(协议,域名,端口号)任意一个不同,就会产生跨域。 跨域引起的原因是浏览器的同源策略限制,不允许不同源的资源进行交互,来保证用户安全性和隐私性。
解决方案
设置响应头
设置响应头"Access-Control-Allow-Origin", "*",
使用cors
安装cors包,node环境中直接使用cors中间件,即可解决,原理还是设置响应头
Nginx代理方式
客户端请求Nginx服务器,Nginx在配置文件中配置监听客户端的请求,然后将匹配的请求代理到真实的服务器。服务器处理请求后返回数据,Nginx再将数据返回给客户端。
ifram通讯解决跨域
在主页面中嵌入一个隐藏ifram,在ifram页面中拿到需要的数据,然后通过postmessage方法发送给主页面。
webpack本地代理(适用于开发环境)
在vue项目配置中配置proxy,将请求到某个地址的请求转发到代理服务器,代理服务器转发请求,接收到服务器返回的数据在返回给前端。
devServer: {
proxy: {
'/api': { // 需要代理的接口路径
target: 'http://api.example.com', // 代理的目标服务器地址
changeOrigin: true, // 是否改变请求的源地址
pathRewrite: {'^/api': ''} // 重写请求的路径
}
}
}
网络安全相关
XSS攻击
攻击者通过向网站注入恶意脚本代码,利用这一漏洞在用户浏览器进行恶意操作。