TIL CORSを学ぶ

5803 ワード

CORS


サーバ上でCORSがクライアント要求を判定する条件は4つある.Access-Control-Allow-Origin Access-Control-Allow-Methods Access-Control-Allow-Headers Access-Control-Max-Age通常、CORSは同源の場合にのみ許可されます.
同一-原点とは端点が同一の場合です.

上の図のように、私のNAVERブログのホームページでNAVERホームページを取ってCORS違反を提示します.端点が違うとCORSは許されません.この場合、すべてのアドレスに対してCORSを許可するには、Access-Control-Allow-Origin = '*'を処理する必要がある.
serveユーティリティを使用してsprintでhttp://localhost:3000サーバを開きます.http://localhost:4999サーバへのCORSリクエストが成功しました.その原因は前述したように、すべてのソースを許可する.
bufferを余分に勉強しました.
const http = require('http')
const ip = 'localhost'
const port = 4999

const server = http.createServer((requerst,response)=>{
  const {method,url} = request
  if(method === 'OPTIONS'){
   res.writeHead(200,defaultcorsHeader) // defalutcorsHeader 작성은 생략하겠다.
   res.end('CORS 성공!')
  }
  if(method === 'POST' && url === '/upper'){
    let body = []
    response.on('data',(chunk)=>{
      body.push(chunk)
    }).on('end',()=>{
      body = Buffer.concat(body).toString()
      res.writeHead(201,defaultcorsHeader)
      res.end(body.toUpperCase())
    })
  }
海辺を思い出すと、データはAという出発駅に流れ、Bという到着点に流れ、データは破片に分かれて移動します.それぞれbufferと呼ばれています.また、幅が狭いため、bufferがゆっくりと移動すると、帯域幅が大きくなってデータ伝送が遅延すると考えられる場合がある.
また、コードでは、ブロックの名義でbodyにデータブロックが積み上げられ、すべてのブロックが到着すると、データと完了は「end」で送信される.bufferが到着するたびに「end」イベントが実行されるわけではないことを覚えておいてください.