cors解决跨域问题

  • 由于XHR对象被W3C标准化之后,提出了很多XHR Level2的新构想,其中新增了很多新方法(onload、response…)和CORS跨域资源共享。浏览器升级后开始支持CORS方案。

  • CORS才是解决跨域的真正解决方案。

  • 代码:

    • 前端:正常请求;

    • 后台:设置请求头;

      // ---------------------------------前端代码
      $.ajax({
          url: 'http://localhost:3006/api/cors',
          success: function (res) {
              console.log(res)
          }
      });
      
      // ---------------------------------后台代码
      const express = require('express');
      const app = express();
      app.listen(3006, () => console.log('启动了'));
      
      // 测试接口(测试cors)
      app.get('/api/cors', (req, res) => {
          // 任何请求来源都可以获取响应的数据
          res.setHeader('Access-Control-Allow-Origin', '*');
          
          res.send('hi,你看到我了');
      });
      
      // 设置我们中间件
      app.use((req, res,next) => {
          res.setHeader('Access-Control-Allow-Origin', '*');
          next();
      });
      app.get('/api/cors/a', (req, res) => {
          res.send('hi,你看到我了');
      });
      app.get('/api/cors/b', (req, res) => {
          res.send('hi,你看到我了');
      });
      
  • 或者采用第三方模块,作为中间件使用:cors

    // npm i cors
    
    const cors = require("cors");
    app.use(cors());   // 相当于是上面的封装,当然人家这个更加优化
    
上一篇:Elasticsearch 设置用户名密码


下一篇:vue+axios前后端分离配置思路