Express 統一配置響應頭 header 方法


express 創建后台服務時,后台服務是需要配置請求體和響應頭的。

如果不想安裝中間件,給 header 設計不同的響應頭,也可以做到同中間件同樣的效果,但是設置setHeader()需要放在路由之前

請求體

當后台收到一個 POST 或 GET  時,Node.js 的 request 可以將請求體也就是請求的數據傳給服務端。

響應頭

當服務端收到請求體的數據后,會通過 response 返回一個實例對象,這個實例對象就是請求到的數據,包含請求狀態信息,數據實例以及錯誤信息。

Response 是一個響應對象,默認使用它的簡寫 res 代替。

Express 提供了20種 res 方法,默認情況下,設置響應頭使用 res.setHeader() 方法,

res.set(field, [value])

例如:

app.all('*', function(req, res, next) {
    res.setHeader('Access-Control-Allow-Origin','*');
	res.setHeader('Access-Control-Allow-Methods', 'GET, POST');  
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization');  
    // res.setHeader("Content-Type", "application/json;charset=utf-8"); 
    next();
})

 

或傳遞一個字段或多個字段:

res.set({
  'Content-Type': 'text/plain',
  'Content-Length': '123',
  'ETag': '12345'
})

 

res.setHeader() 的別名為 res.header(),這兩個方法是等效的。

不同的響應頭,都有不同的作用:

  • Access-Control-Allow-Origin  允許跨域訪問
  • Access-Control-Allow-Headers  向瀏覽器發送預檢請求,詢問是否支持跨域的自定義 header 字段
  • Access-Control-Allow-Methods  詢問是否支持跨域的請求方法
  • Access-Control-Allow-Credentials  允許客戶端攜帶驗證信息去請求,例如 cookie 之類的

以下是全局設置響應頭的代碼:

const app = express();

app.all('*', (req, res, next) => {
  const { origin, Origin, referer, Referer } = req.headers;
  const allowOrigin = origin || Origin || referer || Referer || '*';
    res.header("Access-Control-Allow-Origin", allowOrigin);
    res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("Access-Control-Allow-Credentials", true); //可以帶cookies
    res.header("X-Powered-By", 'Express');
    if (req.method == 'OPTIONS') {
      res.sendStatus(200);
    } else {
    next();
    }
});

參考這個網站:https://www.codota.com/code/javascript/functions/express/Response/header

 

有很多的例子。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM