TIL 211127 | CORS
CORS
Cross-origineリソース共有の略で、ドメインまたはプロトコル、ポートが他のサーバ上のリソースを要求するメカニズムを指します.
ブラウザ独自のCORSポリシーがあります.
クライアントとサーバが同じip上で(つまり同じサーバ上で)動作している場合、リソースを制限なく共有および交換できます.
しかし,クライアントとサーバが異なるip上にある場合,原則としていかなるデータも互いに交換できない.
この場合、サーバがクライアントに応答を送信と、
タイトルにACCES-Control-Allow-Originを追加
クライアントはサーバのライセンスを取得します.このデータをインポートしてタグ付けして、クライアントでデータを表示できます.
基本的に,他のIP上でのデータ共有は不可能である.
この問題を解決するには、サーバがヘッダにアクセス制御Allow-originを追加する必要があります.
従って、以下のミドルウェアで設定すべきである
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:5500');
res.setHeader(
'Access-Control-Allow-Methods',
'OPTIONS, GET, POST, PUT, DELETE'
);
next();
});
このように使用すると、タイトル名を正確に知らなければならない点が不便です.ヘッダーを指定しても少し誤字があっても起動できません.
しかし、corsミドルウェアがあります.私たちはこのようにタイプする必要はありません.
npm i corsでインストール
corsからcorsをインポートします.
あとはappuse(cors());
オプションがない場合は、
app.use(cors());
に設定すると、すべてのcross-originリクエストに応答します.特定のドメインリクエストのみを受け入れるか、特定のリクエストのみに応答する場合は、適切なオプションを設定する必要があります.特定のドメインへのアクセスを許可するオプション。
app.use(cors({
origin: 'http://127.0.0.1:5500',
optionsSuccessStatus: 200,
Credentials: true,// 응답 헤더에 Access-Control-Allow-Credentials 추가
}));
Reference
この問題について(TIL 211127 | CORS), 我々は、より多くの情報をここで見つけました https://velog.io/@daekuenhan/TIL-211127-CORSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol