zoukankan      html  css  js  c++  java
  • node.js如何让前端请求时能跨域

    1995年,Netscape提出了一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同

    当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。

    如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。
    但是我们前端在开发的过程中,难免会遇到需要跨域的情况。我这边主要讲的不是前端的常规跨域,而是后端设置的跨域,我这里用的是node.js

    node原生写法

    const http=require('http');
    // 设置可以跨域的域名
    let allowOrigin={
      'http://localhost': true,
      'http://aaa.com': true,
      'https://aaa.com': true,
    }
    
    http.createServer((req, res)=>{
      let {origin}=req.headers;
    
      if(allowOrigin[origin]){
        res.setHeader('access-control-allow-origin', '*');
      }
    
      res.write('{"a": 12, "b": "Blue"}');
      res.end();
    }).listen(8080);

    koa的写法

    因为我常用的是koa框架,所以给大家附上koa中的写法

    const koa=require('koa');
    let app=new koa();
    app.use(async (ctx,next)=>{ 
        ctx.set('Access-Control-Allow-Origin', '*');
        await next();
    })
    app.listen(3000)
  • 相关阅读:
    异常处理学习笔记
    android 测试
    android 创建快捷方式
    POJ 3320 尺取法(基础题)
    HDOJ 1260 DP
    数位DP练习
    P2727 Stringsobits
    poj 2229 DP
    Canada Cup 2016 C. Hidden Word
    hdoj 1231 最大连续子列和
  • 原文地址:https://www.cnblogs.com/cythia/p/10677240.html
Copyright © 2011-2022 走看看