欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NodeJS實(shí)現(xiàn)跨域的方法(使用示例)

 更新時(shí)間:2024年05月25日 14:40:02   作者:還是大劍師蘭特  
CORS是一種 W3C 標(biāo)準(zhǔn),它使用額外的 HTTP 頭來(lái)告訴瀏覽器讓運(yùn)行在一個(gè) origin (domain) 上的Web應(yīng)用被準(zhǔn)許訪問(wèn)來(lái)自不同源服務(wù)器上的指定的資源,這篇文章主要介紹了NodeJS實(shí)現(xiàn)跨域的方法,需要的朋友可以參考下

方法一,直接在入口文件如 server.js中填寫(xiě)

//引用express 
    const express = require('express') 
    //設(shè)置實(shí)例,調(diào)用express方法 
    const app = express()    
    //設(shè)置跨域 
    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 標(biāo)準(zhǔn),它使用額外的 HTTP 頭來(lái)告訴瀏覽器讓運(yùn)行在一個(gè) origin (domain) 上的Web應(yīng)用被準(zhǔn)許訪問(wèn)來(lái)自不同源服務(wù)器上的指定的資源。在 Node.js 中,可以使用 cors 這個(gè) npm 包來(lái)簡(jiǎn)化 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: '這對(duì)所有來(lái)源都啟用了 CORS!'}) 
})   
app.listen(80, function () { 
  console.log('CORS-enabled web server listening on port 80') 
}) 

單個(gè)路由配置 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') 
}) 

動(dòng)態(tài)來(lái)源配置 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 請(qǐng)求)

JSONP 是一種非官方的跨域數(shù)據(jù)交互協(xié)議,利用 <script> 標(biāo)簽沒(méi)有跨域限制的特點(diǎn)來(lái)實(shí)現(xiàn)跨域通信。但請(qǐng)注意,JSONP 只能用于 GET 請(qǐng)求,并且存在安全風(fēng)險(xiǎn)。

示例:

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)})`);
});

四、代理服務(wù)器

在開(kāi)發(fā)環(huán)境中,有時(shí)候會(huì)使用代理服務(wù)器來(lái)轉(zhuǎn)發(fā)請(qǐng)求,避免直接對(duì) API 服務(wù)器進(jìn)行跨域請(qǐng)求。可以使用 http-proxy-middleware 或 Express 的 proxy 中間件。

綜上,CORS 是最常用的跨域解決方案,因?yàn)樗葮?biāo)準(zhǔn)又靈活,支持各種HTTP方法和自定義頭部。其他方法如 JSONP 和代理服務(wù)器則根據(jù)具體場(chǎng)景選擇使用。

到此這篇關(guān)于NodeJS實(shí)現(xiàn)跨域的方法的文章就介紹到這了,更多相關(guān)NodeJS跨域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

    本文詳細(xì)介紹了npm的--save-dev選項(xiàng)及其在前端開(kāi)發(fā)中的應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • 一文詳解Node中的文件模塊與核心模塊

    一文詳解Node中的文件模塊與核心模塊

    這篇文章主要介紹了一文詳解Node?中文件模塊與核心模塊,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • Node.js本地文件操作之文件拷貝與目錄遍歷的方法

    Node.js本地文件操作之文件拷貝與目錄遍歷的方法

    這篇文章主要介紹了Node.js本地文件操作之文件拷貝與目錄遍歷的方法,拷貝用到了Node的文件API,遍歷則舉了一個(gè)異步API實(shí)現(xiàn)的形式(Node的一大特點(diǎn)),需要的朋友可以參考下
    2016-02-02
  • 詳解nodejs 文本操作模塊-fs模塊(四)

    詳解nodejs 文本操作模塊-fs模塊(四)

    本篇文章詳細(xì)的講訴fa.fstat方法,這個(gè)State對(duì)象中,包含的數(shù)據(jù)都有哪些,并且他們分別代表的含義是什么。具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • 手把手教你VSCode配置JavaScript基于Node.js的調(diào)試環(huán)境

    手把手教你VSCode配置JavaScript基于Node.js的調(diào)試環(huán)境

    最近在補(bǔ)數(shù)據(jù)結(jié)構(gòu),在用VScode調(diào)試js代碼文件結(jié)果怎么都不行,這篇文章主要給大家介紹了關(guān)于VSCode配置JavaScript基于Node.js的調(diào)試環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Node.js 數(shù)據(jù)庫(kù) CRUD 項(xiàng)目示例詳解(完美解決方案)

    Node.js 數(shù)據(jù)庫(kù) CRUD 項(xiàng)目示例詳解(完美解決方案)

    這篇文章主要介紹了Node.js 數(shù)據(jù)庫(kù) CRUD 項(xiàng)目示例詳解(完美解決方案),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-04-04
  • 深入了解 Node的多進(jìn)程服務(wù)實(shí)現(xiàn)

    深入了解 Node的多進(jìn)程服務(wù)實(shí)現(xiàn)

    本文主要介紹了Node的多進(jìn)程服務(wù)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • nodeJs的安裝與npm全局環(huán)境變量的配置詳解

    nodeJs的安裝與npm全局環(huán)境變量的配置詳解

    這篇文章主要介紹了nodeJs的安裝與npm全局環(huán)境變量的配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • nodejs實(shí)現(xiàn)超簡(jiǎn)單生成二維碼的方法

    nodejs實(shí)現(xiàn)超簡(jiǎn)單生成二維碼的方法

    這篇文章主要介紹了nodejs實(shí)現(xiàn)超簡(jiǎn)單生成二維碼的方法,結(jié)合實(shí)例形式分析了nodejs基于qr-image插件生成二維碼的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • 輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片

    輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片

    這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片,本文是系列文章的最后一篇,包含了一個(gè)完整的處理上傳圖片的例子,需要的朋友可以參考下
    2014-12-12

最新評(píng)論