20260622mon
CORS はブラウザだけの制約というのがポイントです。
CORS の仕組み
ブラウザからの場合
ブラウザ → Asteria Warp API
「Origin: localhost:3000 からです」← ブラウザが自動でつける
Asteria Warp
「localhost:3000 は許可リストにない → 拒否」
ブラウザ
「サーバーが許可しなかった → エラー」← ブラウザが止める
Node.js(サーバー)からの場合
Node.js → Asteria Warp API
Origin ヘッダーをつけない(ブラウザじゃないので)
Asteria Warp
「普通の HTTP リクエストだな → 返す」
Node.js
「受け取った → ブラウザに渡す」
まとめ
差出人名を変えているのではなく、そもそも Node.js はブラウザではないので Origin を名乗らない、だから CORS チェックが発動しない、というイメージです。
CORS は「ブラウザが悪いサイトに騙されて勝手にリクエストを送らないようにする」ためのブラウザの自衛機能なので、ブラウザ以外の HTTP 通信には最初から適用されません。
できる抜け道(開発・テスト用途)
| 方法 | 内容 |
|---|---|
| Postman / curl | ブラウザじゃないので Origin を名乗らない |
| ブラウザ拡張機能 | レスポンスヘッダーを改ざんして CORS を無効化(開発用) |
| Node.js プロキシ | 今回の話、ブラウザを経由させない |
Postman が CORS を気にしなくていい理由もここです。ブラウザではないので Origin を名乗らず、サーバーも普通に返します。