亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node.js 中 cors 依賴示例詳解

 更新時(shí)間:2025年02月19日 09:05:35   作者:yqcoder  
cors是一個(gè)用于處理跨域資源共享(CORS)問題的Node.js中間件,可以幫助開發(fā)人員解決前后端分離項(xiàng)目中的跨域問題,該中間件提供了多種配置選項(xiàng),以滿足不同的跨域需求,如指定允許跨域請求的源、請求方法、請求頭等,本文介紹Node.js  cors 依賴相關(guān)知識,感興趣的朋友一起看看吧

`cors` 是一個(gè)用于處理跨域資源共享(Cross - Origin Resource Sharing,CORS)問題的 Node.js 中間件,在前后端分離開發(fā)的項(xiàng)目中經(jīng)常會(huì)用到。

一、跨域問題概述

在瀏覽器中,出于安全考慮,遵循同源策略,即瀏覽器只允許訪問同源(協(xié)議、域名、端口都相同)的資源。當(dāng)瀏覽器向不同源的服務(wù)器發(fā)起請求時(shí),就會(huì)受到瀏覽器的跨域限制,導(dǎo)致請求被阻止。CORS 是一種現(xiàn)代的跨域解決方案,允許服務(wù)器在響應(yīng)頭中設(shè)置一些字段,告訴瀏覽器該請求是被允許的。

1. 安裝 `cors`

# 使用 npm 安裝
npm install cors

2. 基本使用

將 `cors` 中間件應(yīng)用到整個(gè) Express 應(yīng)用,這意味著所有路由都允許跨域請求。當(dāng)客戶端(如瀏覽器)發(fā)起對 `/data` 路由的請求時(shí),服務(wù)器會(huì)在響應(yīng)頭中添加必要的 CORS 相關(guān)字段,從而允許跨域訪問。

const express = require("express");
const cors = require("cors");
const app = express();
// 使用 cors 中間件
app.use(cors());
app.get("/data", (req, res) => {
  res.json({ message: "This is some data from the server" });
});
const port = 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

二、配置選項(xiàng)

`cors` 中間件提供了多種配置選項(xiàng),以滿足不同的跨域需求。

1. `origin`

用于指定允許跨域請求的源(origin)??梢允且粋€(gè)字符串、一個(gè)數(shù)組,或者是一個(gè)函數(shù)。

// 允許單個(gè)源
const corsOptions = {
  origin: "http://example.com",
};
app.use(cors(corsOptions));
// 允許多個(gè)源
const corsOptionsMultiple = {
  origin: ["http://example1.com", "http://example2.com"],
};
app.use(cors(corsOptionsMultiple));
// 使用函數(shù)動(dòng)態(tài)配置 origin
const corsOptionsFunction = {
  origin: (origin, callback) => {
    const allowedOrigins = ["http://example.com", "http://test.com"];
    if (!origin || allowedOrigins.includes(origin)) {
      callback(null, true);
    } else {
      callback(new Error("Not allowed by CORS"));
    }
  },
};
app.use(cors(corsOptionsFunction));

2. `methods`

用于指定允許的 HTTP 請求方法,默認(rèn)值為 `'GET,HEAD,PUT,PATCH,POST,DELETE'`。

const corsOptionsMethods = {
  methods: "GET,POST",
};
app.use(cors(corsOptionsMethods));

3. `allowedHeaders`

用于指定允許的請求頭,默認(rèn)情況下,瀏覽器會(huì)自動(dòng)處理一些常見的請求頭。如果需要自定義請求頭,可以使用該選項(xiàng)。

const corsOptionsHeaders = {
  allowedHeaders: "Content-Type,Authorization",
};
app.use(cors(corsOptionsHeaders));

4. `exposedHeaders`

用于指定允許客戶端訪問的響應(yīng)頭。默認(rèn)情況下,瀏覽器只能訪問一些簡單的響應(yīng)頭,通過該選項(xiàng)可以暴露更多的響應(yīng)頭給客戶端。

const corsOptionsExposed = {
  exposedHeaders: "X-Custom-Header",
};
app.use(cors(corsOptionsExposed));

5. `credentials`

一個(gè)布爾值,指示是否允許客戶端在跨域請求中攜帶憑證(如 cookies、HTTP 認(rèn)證等)。默認(rèn)值為 `false`。

const corsOptionsCredentials = {
  credentials: true,
};
app.use(cors(corsOptionsCredentials));

6. 針對特定路由使用 `cors`

除了將 `cors` 應(yīng)用到整個(gè)應(yīng)用,還可以針對特定的路由使用 `cors` 中間件。

const express = require("express");
const cors = require("cors");
const app = express();
const corsOptions = {
  origin: "http://example.com",
};
// 只允許特定路由跨域
app.get("/data", cors(corsOptions), (req, res) => {
  res.json({ message: "This is some data from the server" });
});
const port = 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

到此這篇關(guān)于Node.js 中 cors 依賴詳解的文章就介紹到這了,更多相關(guān)Node.js cors 依賴內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • node?+?multer?實(shí)現(xiàn)文件上傳過程

    node?+?multer?實(shí)現(xiàn)文件上傳過程

    這篇文章主要介紹了node?+?multer?實(shí)現(xiàn)文件上傳過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Node.js+jade抓取博客所有文章生成靜態(tài)html文件的實(shí)例

    Node.js+jade抓取博客所有文章生成靜態(tài)html文件的實(shí)例

    下面小編就為大家?guī)硪黄狽ode.js+jade抓取博客所有文章生成靜態(tài)html文件的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Nodejs?Docker鏡像體積優(yōu)化實(shí)踐詳解

    Nodejs?Docker鏡像體積優(yōu)化實(shí)踐詳解

    這篇文章主要為大家介紹了Nodejs?Docker鏡像體積優(yōu)化實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 服務(wù)端nodejs抓取jsonp接口數(shù)據(jù)實(shí)現(xiàn)示例

    服務(wù)端nodejs抓取jsonp接口數(shù)據(jù)實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了服務(wù)端nodejs抓取jsonp接口數(shù)據(jù)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • npm安裝windows-build-tools卡在Successfully?installed?Python2.7

    npm安裝windows-build-tools卡在Successfully?installed?Python2.7

    這篇文章主要介紹了npm安裝windows-build-tools卡在Successfully?installed?Python2.7的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Node.js之readline模塊的使用詳解

    Node.js之readline模塊的使用詳解

    這篇文章主要介紹了Node.js之readline模塊的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 詳解nvm管理多版本node踩坑

    詳解nvm管理多版本node踩坑

    這篇文章主要介紹了詳解nvm管理多版本node踩坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • node.js開機(jī)自啟動(dòng)腳本文件

    node.js開機(jī)自啟動(dòng)腳本文件

    這篇文章主要介紹了node.js開機(jī)自啟動(dòng)腳本文件的方法和代碼,這里分享給大家,有需要的小伙伴參考下吧
    2014-12-12
  • Node.js基礎(chǔ)入門之模塊與npm包管理器使用詳解

    Node.js基礎(chǔ)入門之模塊與npm包管理器使用詳解

    Node.js是一個(gè)基于Chrome?V8引擎的JavaScript運(yùn)行時(shí)。類似于Java中的JRE,.Net中的CLR。本文將詳細(xì)為大家介紹Node.js中的模塊與npm包管理器的使用,需要的可以參考一下
    2022-03-03
  • 使用node-media-server搭建一個(gè)簡易的流媒體服務(wù)器

    使用node-media-server搭建一個(gè)簡易的流媒體服務(wù)器

    這篇文章主要介紹了使用node-media-server搭建一個(gè)簡易的流媒體服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論