zoukankan      html  css  js  c++  java
  • 无代理处理post非简单请求跨域问题

    express下

    在处理纯http服务post请求的时候的跨域问题

    即使在服务端先加入

    Access-Control-Allow-Origin: *(get即时有效)

    会出现

      Failed to load http://127.0.0.1:3000/heros: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5000' is therefore not allowed access.
     的报错

    参考资料由于对于数据的操作属于非简单请求,当浏览器真正操作数据前需要做一次‘preflight’当预检成功会才会发送数据操作

    预检请求的方式为option,所以可以在后台app.js中通过判断请求类型为option时进行预检的通过返回

    const app = express()
    
    // 处理预检,CORS 默认支持 get
    // 其他需要单独处理
    app.use((req, res, next) => {
      // 如果请求方法是 options ,则我认为是浏览器的非简单预检请求
      if (req.method.toLowerCase() === 'options') {
        // 处理预检请求的响应
        // return 的目的是不让代码继续往后执行了
        return res
          .status(200)
           .set('Access-Control-Allow-Origin', '*')
          // .set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE')
           .set('Access-Control-Allow-Headers', 'Content-Type')
           .end()
       }
    
      // 非预检请求直接跳过该中间件的处理
      next()
     })
     

    资料:http://www.ruanyifeng.com/blog/2016/04/cors.html

    学习记录,望指点学习,谢谢!
  • 相关阅读:
    objectMediator
    vi
    string regex
    ar
    widget class in class
    Makefile 语法分析 第三部分
    在Makefile中的 ".PHONY "是做什么的?
    】openssl移植Android使用及其相关经验分享
    精品Android源码推荐,看了绝不后悔
    Makefile 语法分析 第三部分
  • 原文地址:https://www.cnblogs.com/herewego/p/9283846.html
Copyright © 2011-2022 走看看