zoukankan      html  css  js  c++  java
  • 14.2 跨域

    index.html

    document.cookie = 'name=cookieZxp'
    fetch('http://localhost:4000/getData', {
      method: 'PUT',
      headers: {
        'name': 'zxp'
      },
      credentials: 'include' // 跨域请求携带cookie,需开启此凭证
    })
    .then(res => {
      console.log(res.headers.get('name'), 'x1'); //application/json
      return res.text()
    })
    .then(res => {
      console.log(res)
    })

    后端

    server1.js

    let express = require('express')
    let app  = express()
    app.use(express.static(__dirname))  // index.html
    app.listen(3000)

    server2.js

    const app  = express()
    const whileList = ['http://localhost:3000'] // 白名单
    app.use((req, res, next) => {
      let origin = req.headers.origin;
      if (whileList.includes(origin)) {
        res.setHeader('Access-Control-Allow-Origin', origin)  // 设置允许跨域的源 这里origin是http://localhost:3000  *表示域可以访问,不能和Access-Control-Allow-Credentials共用(设置哪个源可以访问我)
        res.setHeader('Access-Control-Allow-Headers', 'name') // 前端设置header头,后端需同步设置。(允许携带哪个头访问我)
        res.setHeader('Access-Control-Allow-Methods', 'PUT')  // 不设置 默认支持get、post、head(允许哪个方法访问我)
        res.setHeader('Access-Control-Allow-Credentials', true) // (允许携带cookie)
        res.setHeader('Access-Control-Max-Age', 6)  // 预请求的返回结构被缓存的时间 (预检的存活时间)
        res.setHeader('Access-Control-Expose-Headers', 'name') // 参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Expose-Headers  (允许前端获取哪个头)
        if (req.method === 'OPTIONS') {
          res.end() // OPTIONS请求不做任何处理 (Request Method:OPTIONS)
        }
      }
      next()
    })
    app.put('/getData', (req, res) => {
      console.log(req.headers)  // 因为设置了Credentials,这里能拿到cookie
      res.setHeader('name', 'zxp2') // 这里的zxp2浏览器Response Headers里能拿到
      res.end('我不爱你')
    })
    app.get('/getData', (req, res) => {
      console.log(req.headers)
      res.end('我不爱你')
    })
    app.listen(4000)
  • 相关阅读:
    linux内核同步机制相关收集
    【转载】关于终端和控制台的一些解释
    【转】linux内核调试方法总结
    misc汇总
    关于proc的介绍,比较详细
    linux内核启动流程分析
    linux通用中断子系统介绍
    ftrace在mips上的验证
    线程死锁demo
    BeanFactory与FactoryBean
  • 原文地址:https://www.cnblogs.com/zouxinping/p/10346294.html
Copyright © 2011-2022 走看看