node.js如何讓前端請求時能跨域

1995年,Netscape提出了一個著名的安全策略。如今全部支持JavaScript 的瀏覽器都會使用這個策略。所謂同源是指,域名,協議,端口相同前端

當一個瀏覽器的兩個tab頁中分別打開來 百度和谷歌的頁面當瀏覽器的百度tab頁執行一個腳本的時候會檢查這個腳本是屬於哪一個頁面的,即檢查是否同源,只有和百度同源的腳本纔會被執行。node

若是非同源,那麼在請求數據時,瀏覽器會在控制檯中報一個異常,提示拒絕訪問。
可是咱們前端在開發的過程當中,不免會遇到須要跨域的狀況。我這邊主要講的不是前端的常規跨域,而是後端設置的跨域,我這裏用的是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)
相關文章
相關標籤/搜索