express配置跨域

前后端分离场景后端需要配置跨域,否则浏览器那端跨域请求会报错。

跨域要配置的:

app.all('*', (req, res, next) => {
  // google需要配置,否则报错cors error
  res.setHeader('Access-Control-Allow-Credentials', 'true')
  // 允许的地址,http://127.0.0.1:9000这样的格式
  res.setHeader('Access-Control-Allow-Origin', req.get('Origin'))
  // 允许跨域请求的方法
  res.setHeader(
    'Access-Control-Allow-Methods',
    'POST, GET, OPTIONS, DELETE, PUT'
  )
  // 允许跨域请求header携带哪些东西
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept, If-Modified-Since'
  )
  next()
})

  

  

整体写法例子:

const express = require('express')
const app = express()
const port = 9000

let mall_data = require('./data/mall')

app.all('*', (req, res, next) => {
  // google需要配置,否则报错cors error
  res.setHeader('Access-Control-Allow-Credentials', 'true')
  // 允许的地址,http://127.0.0.1:9000这样的格式
  res.setHeader('Access-Control-Allow-Origin', req.get('Origin'))
  // 允许跨域请求的方法
  res.setHeader(
    'Access-Control-Allow-Methods',
    'POST, GET, OPTIONS, DELETE, PUT'
  )
  // 允许跨域请求header携带哪些东西
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept, If-Modified-Since'
  )
  next()
})

app.post('/mall/createMall', (req, res) => {
  res.send({
    code: 0,
    msg: '创建成功!',
  })
})

app.get('/mall/queryMall', (req, res) => {
  res.send({
    code: 0,
    sum_count: mall_data.mall.length,
    data: mall_data.mall,
  })
})

app.get('/mall/getMallList', (req, res) => {
  let mallId = req.query.mallId
  let data = {}
  for (let item of mall_data.mall) {
    if (item.id == mallId) {
      data = item
      break
    }
  }
  res.send({
    code: 0,
    data: data,
  })
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

  

原文地址:https://www.cnblogs.com/zezhou/p/14666102.html