NodeJS实现跨域的方法(使用示例)

 更新时间:2024年05月25日 14:40:02   作者:还是大剑师兰特  
CORS是一种 W3C 标准,它使用额外的 HTTP 头来告诉浏览器让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源,这篇文章主要介绍了NodeJS实现跨域的方法,需要的朋友可以参考下

方法一,直接在入口文件如 server.js中填写

//引用express 
    const express = require('express') 
    //设置实例,调用express方法 
    const app = express()    
    //设置跨域 
    app.all("*",(req,res,next)=>{ 
        res.header("Access-Control-Allow-Origin","*") 
        res.header("Access-Control-Allow-Headers","Content-Type") 
        res.header("Access-Control-Allow-Methods","*") 
        res.header('Content-Type','application/json;charset=utf-8') 
        next() 
    }) 

方法二,使用中间件cors

CORS 是一种 W3C 标准,它使用额外的 HTTP 头来告诉浏览器让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。在 Node.js 中,可以使用 cors 这个 npm 包来简化 CORS 的配置。

安装cors

npm install cors

使用示例

var express = require('express') 
var cors = require('cors') 
var app = express() 
app.use(cors())  
app.get('/products/:id', function (req, res, next) { 
  res.json({msg: '这对所有来源都启用了 CORS!'}) 
})   
app.listen(80, function () { 
  console.log('CORS-enabled web server listening on port 80') 
}) 

单个路由配置 CORS

var express = require('express') 
var cors = require('cors') 
var app = express() 
var corsOptions = { 
  origin: 'http://example.com', 
  optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 
} 
app.get('/products/:id', cors(corsOptions), function (req, res, next) { 
  res.json({msg: 'This is CORS-enabled for only example.com.'}) 
}) 
app.listen(80, function () { 
  console.log('CORS-enabled web server listening on port 80') 
}) 

动态来源配置 CORS

var express = require('express') 
var cors = require('cors') 
var app = express() 
var whitelist = ['http://example1.com', 'http://example2.com'] 
var corsOptions = { 
  origin: function (origin, callback) { 
    if (whitelist.indexOf(origin) !== -1) { 
      callback(null, true) 
    } else { 
      callback(new Error('Not allowed by CORS')) 
    } 
  } 
} 
app.get('/products/:id', cors(corsOptions), function (req, res, next) { 
  res.json({msg: 'This is CORS-enabled for a whitelisted domain.'}) 
}) 
app.listen(80, function () { 
  console.log('CORS-enabled web server listening on port 80') 
}) 

三、使用 JSONP (仅限 GET 请求)

JSONP 是一种非官方的跨域数据交互协议,利用 <script> 标签没有跨域限制的特点来实现跨域通信。但请注意,JSONP 只能用于 GET 请求,并且存在安全风险。

示例:

app.get('/jsonp', (req, res) => {
  const callback = req.query.callback;
  const data = { message: 'Hello, this is JSONP response' };
  res.type('text/javascript');
  res.send(`${callback}(${JSON.stringify(data)})`);
});

四、代理服务器

在开发环境中,有时候会使用代理服务器来转发请求,避免直接对 API 服务器进行跨域请求。可以使用 http-proxy-middleware 或 Express 的 proxy 中间件。

综上,CORS 是最常用的跨域解决方案,因为它既标准又灵活,支持各种HTTP方法和自定义头部。其他方法如 JSONP 和代理服务器则根据具体场景选择使用。

到此这篇关于NodeJS实现跨域的方法的文章就介绍到这了,更多相关NodeJS跨域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入解析Node.js中save-dev命令的具体使用

    深入解析Node.js中save-dev命令的具体使用

    本文详细介绍了npm的--save-dev选项及其在前端开发中的应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • 一文详解Node中的文件模块与核心模块

    一文详解Node中的文件模块与核心模块

    这篇文章主要介绍了一文详解Node 中文件模块与核心模块,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • Node.js本地文件操作之文件拷贝与目录遍历的方法

    Node.js本地文件操作之文件拷贝与目录遍历的方法

    这篇文章主要介绍了Node.js本地文件操作之文件拷贝与目录遍历的方法,拷贝用到了Node的文件API,遍历则举了一个异步API实现的形式(Node的一大特点),需要的朋友可以参考下
    2016-02-02
  • 详解nodejs 文本操作模块-fs模块(四)

    详解nodejs 文本操作模块-fs模块(四)

    本篇文章详细的讲诉fa.fstat方法,这个State对象中,包含的数据都有哪些,并且他们分别代表的含义是什么。具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • 手把手教你VSCode配置JavaScript基于Node.js的调试环境

    手把手教你VSCode配置JavaScript基于Node.js的调试环境

    最近在补数据结构,在用VScode调试js代码文件结果怎么都不行,这篇文章主要给大家介绍了关于VSCode配置JavaScript基于Node.js的调试环境的相关资料,需要的朋友可以参考下
    2022-12-12
  • Node.js 数据库 CRUD 项目示例详解(完美解决方案)

    Node.js 数据库 CRUD 项目示例详解(完美解决方案)

    这篇文章主要介绍了Node.js 数据库 CRUD 项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-04-04
  • 深入了解 Node的多进程服务实现

    深入了解 Node的多进程服务实现

    本文主要介绍了Node的多进程服务实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • nodeJs的安装与npm全局环境变量的配置详解

    nodeJs的安装与npm全局环境变量的配置详解

    这篇文章主要介绍了nodeJs的安装与npm全局环境变量的配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • nodejs实现超简单生成二维码的方法

    nodejs实现超简单生成二维码的方法

    这篇文章主要介绍了nodejs实现超简单生成二维码的方法,结合实例形式分析了nodejs基于qr-image插件生成二维码的相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • 轻松创建nodejs服务器(10):处理上传图片

    轻松创建nodejs服务器(10):处理上传图片

    这篇文章主要介绍了轻松创建nodejs服务器(10):处理上传图片,本文是系列文章的最后一篇,包含了一个完整的处理上传图片的例子,需要的朋友可以参考下
    2014-12-12

最新评论