nodeJS解决跨域(同源策略)的简单三种方法(jsonp,cors,服务器代理)
2021/10/14 11:14:10
本文主要是介绍nodeJS解决跨域(同源策略)的简单三种方法(jsonp,cors,服务器代理),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
产生跨域请求问题的原因
因为在浏览器中有一个同源策略,这是浏览器最基本的安全功能,但是只在浏览器中有,在服务器中没有这个问题。
同源就是指:协议,域名,端口号都相同,任意一个不满足,就触发了同源策略,我们把触发了同源策略的请求叫做跨域请求。
-
jsonp
<script src="http://domain/api?name=xujie&pwd=123456&callback=jsonp""></script> <script> //函数名与地址的cb或者callback的值一致 function jsonp(res){ console.log(res) } </script>
jsonp的使用简单且兼容性不错,但是仅限于get请求
-
CORS
实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信,所以只需对服务器进行设置。
1服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。该属性表示哪些域名可以访问资源,如果设置通配符则表示所有网站都可以访问资源。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。
//在后端接口中设置 header('Access-Control-Allow-Origin:域名'); //当域名为*时支持所有网站都可以访问资源
2
通过下载cors包来解决(简单粗暴)
安装代码:npm i cors -g
用法:var express=require('express') var cors=require('cors') //导入cors包 var app=express() app.use(express.static('public')) // app.use(cors()) //设置这个就允许所以域名跨域 app.use('/xujie',cors(),function(req,res){ //在参数中写入cors()就是允许自定义可跨域访问的域名 res.json({name:8888}) })
-
代理
通过访问我们自己的服务器,让我们自己的服务器去帮我们请求资源,再返回给我们。
安装一个包npm i http-proxy-middleware -s
代码写法:
var express=require('express') var app=express() const {createProxyMiddleware} = require('http-proxy-middleware') app.use(express.static('public')) app.use('/xujie',createProxyMiddleware({ target:'http://localhost:8888', changeOrigin:true })) app.listen(7777)
这篇关于nodeJS解决跨域(同源策略)的简单三种方法(jsonp,cors,服务器代理)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程
- 2024-11-16Vue学习:新手入门必备教程
- 2024-11-16Vue3入门:新手必读的简单教程
- 2024-11-16Vue3入门:新手必读的简单教程