成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Node.js知識 — HTTP 請求與響應(yīng)如何設(shè)置 Cookie 信息

網(wǎng)絡(luò) 通信技術(shù)
HTTP Cookie是服務(wù)器發(fā)送到用戶瀏覽器并保存在本地的一小塊數(shù)據(jù),瀏覽器下次向同一服務(wù)器發(fā)起請求時會攜帶該 cookie 信息到服務(wù)器。

[[398674]]

HTTP Cookie[1] 是服務(wù)器發(fā)送到用戶瀏覽器并保存在本地的一小塊數(shù)據(jù),瀏覽器下次向同一服務(wù)器發(fā)起請求時會攜帶該 cookie 信息到服務(wù)器。

本文來自 “Nodejs技術(shù)棧” 一位讀者的一個問題,“Node.js 發(fā)起 HTTP 請求時,怎么攜帶上 cookie 信息?”

通常我們在瀏覽器向服務(wù)器發(fā)起一個請求,瀏覽器會檢查是否有相應(yīng)的 Cookie(瀏覽器的安裝目錄下有個 cookie 文件夾用來存放各個域下設(shè)置的 cookie 信息),如有則自動添加到 Request headers 的 cookie 字段中發(fā)送到服務(wù)器。

這是瀏覽器的行為會自動幫我們做,那么如果一個 Node.js 做為客戶端呢?

根據(jù) RFC 6265[2] 定義的 cookie 工作方式,在 HTTP 請求處理中,服務(wù)端可以在 Response headers 中為客戶端設(shè)置 Set-Cookie 字段。另外,客戶端在 HTTP 請求的 Request headers 中以字段 Cookie 的形式將 cookie 信息傳遞給服務(wù)端。

下面我們用 Node.js 提供的系統(tǒng)模塊 HTTP[3] 看看如何實現(xiàn)。

這是客戶端的請求方法實現(xiàn),我們可以在 headers 中直接設(shè)置 Cookie 字段,也可通過 http.request 返回的 req 對象調(diào)用 setHeader() 方法設(shè)置。

  1. const http = require('http'); 
  2. function sendRequest() { 
  3.   const req = http.request({ 
  4.     method: 'GET'
  5.     host: '127.0.0.1'
  6.     port: 3010, 
  7.     path: '/api'
  8.     headers: { 
  9.       Cookie: ['a=111''b=222'] // 方式一設(shè)置 
  10.     } 
  11.   }, res => { 
  12.     let data = ''
  13.     res.on('data', chunk => data += chunk.toString()); 
  14.     res.on('end', () => { 
  15.       console.log('response body: ', data); 
  16.       console.log('response cookie: ', res.headers['set-cookie']); 
  17.     }); 
  18.   }); 
  19.   req.setHeader('Cookie', ['b=222''c=333']) // 方式二設(shè)置 
  20.   req.on('error', console.error); 
  21.   req.end(); 
  22. sendRequest(); 

服務(wù)端代碼如下所示,注意響應(yīng)設(shè)置的是 Set-Cookie 字段。

  1. const http = require('http'); 
  2.  
  3. http.createServer((req, res) => { 
  4.   if (req.url === '/api') { 
  5.     console.log('received cookie data: ', req.headers.cookie); 
  6.     res.setHeader('Set-Cookie', ['c=333''d=444']) 
  7.     res.end('Cookie set success!'); 
  8.   } else { 
  9.     res.end('ok!'); 
  10.   } 
  11. }).listen(3010); 

同樣的當(dāng)你使用 request、node-fetch 等這些 HTTP 的請求庫,其使用是相通的。

參考資料

[1]HTTP Cookie: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies

[2]RFC 6265: https://tools.ietf.org/html/rfc6265

[3]HTTP: https://nodejs.org/dist/latest-v14.x/docs/api/http.html

本文轉(zhuǎn)載自微信公眾號「Nodejs技術(shù)棧」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Nodejs技術(shù)棧公眾號。

 

責(zé)任編輯:武曉燕 來源: Nodejs技術(shù)棧
相關(guān)推薦

2021-03-09 08:03:21

Node.js 線程JavaScript

2021-10-21 08:59:17

技術(shù)HTTP攻擊

2023-10-04 07:35:03

2011-09-09 14:23:13

Node.js

2017-08-17 13:56:30

JavascriptNode.jsHttp

2024-03-18 10:15:00

HTTPNode.jsAPI

2014-09-12 10:35:09

Node.jsHTTP 206

2023-06-30 23:25:46

HTTP模塊內(nèi)存

2022-10-28 15:51:24

JavaScript開發(fā)Node.js

2013-11-01 09:34:56

Node.js技術(shù)

2015-03-10 10:59:18

Node.js開發(fā)指南基礎(chǔ)介紹

2021-10-03 15:02:50

HTTPNodejs

2017-04-24 08:31:26

Node.jsExpress.jsHTTP

2021-05-21 09:36:42

開發(fā)技能代碼

2025-01-03 09:12:11

2011-11-10 08:55:00

Node.js

2012-10-24 14:56:30

IBMdw

2011-09-08 13:46:14

node.js

2011-11-01 10:30:36

Node.js

2011-09-02 14:47:48

Node
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产一区二区三区免费 | www.中文字幕.com | 欧美激情精品久久久久久 | 亚洲欧美日韩在线 | 成年免费大片黄在线观看一级 | 97国产在线视频 | 四虎永久在线精品免费一区二 | 懂色一区二区三区免费观看 | 午夜大片 | 日韩中文字幕高清 | 亚洲一区二区成人 | 精精精精xxxx免费视频 | 毛片免费视频 | 国产精品69毛片高清亚洲 | 日韩欧美一级精品久久 | 久久美国 | 日韩一区二区在线播放 | 国产日产精品一区二区三区四区 | 欧美色综合一区二区三区 | 一区二区视频在线 | 精品久久精品 | 国产免费av在线 | 中文二区 | 日韩福利一区 | 久久精品一区二区 | 老司机67194精品线观看 | 亚洲乱码一区二区三区在线观看 | 人人做人人澡人人爽欧美 | 一区二区三区免费在线观看 | 日本一区二区不卡 | 狠狠干美女 | 日韩欧美在线观看 | 日韩爱爱网站 | 国产免费一区二区 | 国产精品美女久久久久久免费 | 中文字幕高清 | 午夜国产精品视频 | 国产精品久久久久无码av | 久久精品国产一区老色匹 | 欧美成人手机视频 | 一区二区三区网站 |