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

node.js中跨域請(qǐng)求實(shí)現(xiàn)方法詳解

 更新時(shí)間:2024年12月12日 10:12:18   作者:小灰灰學(xué)編程  
這篇文章主要介紹了node.js中跨域請(qǐng)求實(shí)現(xiàn)方法詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

默認(rèn)情況下,出于安全考慮,瀏覽器會(huì)實(shí)施同源策略,阻止網(wǎng)頁向不同源的服務(wù)器發(fā)送請(qǐng)求或接收來自不同源的響應(yīng)。

同源策略:協(xié)議、域名、端口三者必須保持一致

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="https://cdn.staticfile.net/jquery/3.7.1/jquery.min.js"></script>
</head>
<body>
  <button id="btnGet">get請(qǐng)求</button>
  <button id="btnPost">post請(qǐng)求</button>
  <script>
    $('#btnGet').on('click', function(){
      console.log('點(diǎn)擊get請(qǐng)求')
      $.ajax({
        type: 'GET',
        url: 'http://127.0.0.1:3000/api/get',
        data: {
          name: 'lbj',
          number: 23
        },
        success: (res) =>{
          console.log(res, 'get請(qǐng)求成功')
        }
      })
    })
    $('#btnPost').on('click', function(){
      console.log('點(diǎn)擊post請(qǐng)求')
      $.ajax({
        type: 'POST',
        url: 'http://127.0.0.1:3000/api/post',
        data: {
          name: 'lbj',
          number: 23
        },
        success: (res) =>{
          console.log(res, 'get請(qǐng)求成功')
        }
      })
    })
  </script>
</body>
</html>

常見的解決跨域請(qǐng)求的方法

  • CORS(跨源資源共享)
  • JSONP
  • 代理服務(wù)器
  • Nginx反向代理

CORS的核心原理

是通過在HTTP響應(yīng)頭中添加特定的CORS相關(guān)字段,告訴瀏覽器哪些域名是被允許的,從而解決跨域請(qǐng)求的問題。這些字段包括:

Access-Control-Allow-Origin:指定允許訪問的域名。可以是單個(gè)域名,也可以是逗號(hào)分隔的多個(gè)域名,或者使用通配符*表示允許所有域名訪問。
Access-Control-Allow-Methods:指定允許的HTTP方法。例如,GET、POST等。
Access-Control-Allow-Headers:指定允許的HTTP頭部。例如,Content-Type等。
Access-Control-Allow-Credentials:表示是否允許發(fā)送包含憑據(jù)的請(qǐng)求,如Cookie。默認(rèn)情況下,不發(fā)送憑據(jù)。
Access-Control-Expose-Headers:指定哪些HTTP頭部可以被瀏覽器訪問。

CORS實(shí)現(xiàn)方法

// 安裝中間件
// npm install cors
// 導(dǎo)入中間件
const cors = require('cors')
// 配置中間件,要在路由之前
app.use(cors())

CORS的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):
標(biāo)準(zhǔn)化:CORS是W3C標(biāo)準(zhǔn),被廣泛支持。
靈活性:可以通過配置允許特定的源、方法和頭。
安全性:可以明確指定哪些資源可以被跨域訪問。
缺點(diǎn):
配置復(fù)雜性:需要仔細(xì)配置CORS策略,以確保安全性和功能性。
瀏覽器兼容性:雖然現(xiàn)代瀏覽器都支持CORS,但某些舊版本瀏覽器可能不支持或支持不完全。

jsonp的實(shí)現(xiàn)方法

JSONP是一種通過script標(biāo)簽的src屬性來實(shí)現(xiàn)跨域請(qǐng)求的技術(shù)。由于script標(biāo)簽不受同源策略的限制,因此可以加載不同源的腳本。JSONP通常用于GET請(qǐng)求。

jsonp的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):
兼容性:JSONP在舊版本瀏覽器中也被廣泛支持。
簡(jiǎn)單易用:實(shí)現(xiàn)起來相對(duì)簡(jiǎn)單,不需要額外的中間件或配置。缺點(diǎn):
安全性:JSONP存在安全風(fēng)險(xiǎn),因?yàn)樗试S跨域執(zhí)行腳本。
局限性:只支持GET請(qǐng)求,不支持POST等其他HTTP方法。

jsonp的實(shí)現(xiàn)

<button id="btnJsonp">jsonp請(qǐng)求</button>
$('#btnJsonp').on('click', function(){
      console.log('點(diǎn)擊jsonp請(qǐng)求')
      $.ajax({
        method: 'GET',
        url: 'http://127.0.0.1:3000/api/jsonp',
        dataType: 'jsonp', 
        success: (res) =>{
          console.log(res, 'jsonp請(qǐng)求成功')
        }
      })
})

代理服務(wù)器

實(shí)現(xiàn)方式:代理服務(wù)器充當(dāng)客戶端和目標(biāo)服務(wù)器之間的中介??蛻舳讼虼矸?wù)器發(fā)起請(qǐng)求,代理服務(wù)器再將請(qǐng)求轉(zhuǎn)發(fā)給目標(biāo)服務(wù)器,并將響應(yīng)返回給客戶端。通過這種方式,可以繞過瀏覽器的同源策略。

優(yōu)點(diǎn):
靈活性:可以處理各種跨域請(qǐng)求,包括POST等HTTP方法。
安全性:可以通過代理服務(wù)器進(jìn)行身份驗(yàn)證和授權(quán)。
缺點(diǎn):
實(shí)現(xiàn)復(fù)雜性:需要設(shè)置和維護(hù)代理服務(wù)器。
性能影響:代理服務(wù)器可能會(huì)增加請(qǐng)求延遲和帶寬消耗。

Nginx反向代理

實(shí)現(xiàn)方式:通過Nginx配置反向代理,將跨域請(qǐng)求轉(zhuǎn)發(fā)到Node.js應(yīng)用。

優(yōu)點(diǎn):
性能:Nginx是一個(gè)高性能的HTTP服務(wù)器和反向代理服務(wù)器。
安全性:可以通過Nginx進(jìn)行SSL/TLS加密和身份驗(yàn)證。
缺點(diǎn):
配置復(fù)雜性:需要熟悉Nginx的配置和管理。
依賴性:需要額外的Nginx服務(wù)器。

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

相關(guān)文章

  • Node.js中的HTTP請(qǐng)求與響應(yīng)詳解

    Node.js中的HTTP請(qǐng)求與響應(yīng)詳解

    本文詳細(xì)講解了Node.js中的HTTP請(qǐng)求與響應(yīng),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • node.js中的fs.unlinkSync方法使用說明

    node.js中的fs.unlinkSync方法使用說明

    這篇文章主要介紹了node.js中的fs.unlinkSync方法使用說明,本文介紹了fs.unlinkSync的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs處理http請(qǐng)求實(shí)例詳解之get和post

    nodejs處理http請(qǐng)求實(shí)例詳解之get和post

    最近一段時(shí)間在學(xué)習(xí)前端向服務(wù)器發(fā)送數(shù)據(jù)和請(qǐng)求數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于nodejs處理http請(qǐng)求實(shí)例詳解之get和post的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • node.js事件輪詢機(jī)制原理知識(shí)點(diǎn)

    node.js事件輪詢機(jī)制原理知識(shí)點(diǎn)

    在本篇文章里小編給大家分享的是一篇關(guān)于node.js事件輪詢機(jī)制的相關(guān)知識(shí)點(diǎn)文章,有興趣的朋友們可以參考下。
    2019-12-12
  • 三分鐘教你用Node做一個(gè)微信哄女友神器(面向小白)

    三分鐘教你用Node做一個(gè)微信哄女友神器(面向小白)

    這篇文章主要介紹了三步教你用Node做一個(gè)微信哄女友神器(面向小白),用node和wechaty微信網(wǎng)頁接口開發(fā)的一款小工具,可以定時(shí)給女朋友發(fā)每天的天氣情況,天氣提醒,每日一句,通過配置機(jī)器人api后還可以實(shí)現(xiàn)微信機(jī)器人自動(dòng)陪女朋友聊天,需要的朋友可以參考下
    2019-06-06
  • Node.js使用JSONP接口的具體用法

    Node.js使用JSONP接口的具體用法

    JSONP是一個(gè)跨域解決方案,本文主要介紹了Node.js使用JSONP接口的具體用法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • Node.js中看JavaScript的引用

    Node.js中看JavaScript的引用

    這篇文章主要介紹了Node.js中看JavaScript的引用的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • nodejs實(shí)現(xiàn)OAuth2.0授權(quán)服務(wù)認(rèn)證

    nodejs實(shí)現(xiàn)OAuth2.0授權(quán)服務(wù)認(rèn)證

    本篇文章主要介紹了nodejs實(shí)現(xiàn)OAuth2.0授權(quán)服務(wù)認(rèn)證,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • node.js中 mysql 增刪改查操作及async,await處理實(shí)例分析

    node.js中 mysql 增刪改查操作及async,await處理實(shí)例分析

    這篇文章主要介紹了node.js中 mysql 增刪改查操作及async,await處理,結(jié)合實(shí)例形式分析了node.js中 mysql庫安裝、增刪改查操作及async,await處理相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • NodeJS提供了的文件操作相關(guān)的API

    NodeJS提供了的文件操作相關(guān)的API

    讓前端覺得如獲神器的不是NodeJS能做網(wǎng)絡(luò)編程,而是NodeJS能夠操作文件,小至文件查找,大至代碼編譯,幾乎沒有一個(gè)前端工具不操作文件,換個(gè)角度講,幾乎也只需要一些數(shù)據(jù)處理邏輯,再加上一些文件操作,就能夠編寫出大多數(shù)前端工具
    2023-11-11

最新評(píng)論