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」イベントが実行されるわけではないことを覚えておいてください.
Reference
この問題について(TIL CORSを学ぶ), 我々は、より多くの情報をここで見つけました https://velog.io/@boo1996/TIL-CORS-추가-공부テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol