Nodejs Express遇到的坑

作項目用Express框架搭服務端解決跨域問題的時候遇到的一個坑,app.all()居然不生效,記錄下來防止之後再犯😅跨域

解決跨域(CORS)

在app.js中加入如下代碼解決跨域問題相信你們都知道:app

app.all('*', function(req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', '*')
  res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
  res.setHeader('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key')
  if (req.method == 'OPTIONS') {
    res.status(200).end()
  } else {
    next()
  }
})
複製代碼

可是我卻遇到了一個問題,返回的報文響應頭部卻沒有設置的這三個字段,只有在返回數據的前面設置頭部字段才生效,後來發現問題出在這段代碼加入的地方。我把它放在了app.use()路由處理的後面了,即響應報文發出去了才設置報文頭,這固然沒有效果。框架

由於Express是按照定義的順序執行中間件,所以只要將app.all()放到路由處理前面就行了 spa

example

參考資料:stackoverflow.com/questions/2…3d

相關文章
相關標籤/搜索