beatbox4108
@beatbox4108

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

JavascriptのimportとCORSの関係について

解決したいこと

以下の例のような状況の際のブラウザのCORSの挙動について知りたいです。

例)

  1. 運営するWebサイトがexample.jpにあり、そこからscriptタグでexample.commain.jsを実行します。
  2. example.commain.jsは、sub.jsにimportで依存しています。
階層関係
example.jp
   └─ index.html  ↴ 
example.com      scriptタグでクロスオリジンで実行されている
  ├─ main.js    ↲  ↴   
    │            importで依存関係にある
  └─ sub.js        ↲

この際に、2のimportで行われるリクエストはCORSで拒否されるのかどうか。

0

2Answer

Origin:起源,発端; 源泉,源 => 起点ドメイン、最初のURL,トップドメイン、基点ドメイン、自国の領土

CORSで拒否されるのかどうか。

example.comの応答文に、Originヘッダーに許可methodと許可ドメイン(example.jp)の記述がなければ、拒否される。しかし、既に、main.jsの取得が成功(オプトイン)しているため、拒否されない。(多分?)

さて、

example.comの応答文とは?

クライアント側は自国の領土以外の他国の領土から、資源(sub.js)を借用する場合、GET文で資源(sub.js)を要求する前に、OPTION文で国交一覧の問合わせをします。example.comの応答文のOriginヘッダーが許可するURL,ドメイン、国交一覧です。

どんな国からもwellcomeは*となります。

xhr.withCredentials = true;
mode: 'cors'
withCredentials: true

は、その都度、OPTION文で問い合わせを省略する、継続する、おまじない(オプトイン)とお考えください。

今,流行りのwebブラウザーはおまじないのオプトインをしてくれます。

1Like

Comments

  1. @beatbox4108

    Questioner

    わかりやすい例えのおかげで、サーバーとのリクエストの流れを理解できました。
    回答いただき、ありがとうございました!

スクリプトから import されたスクリプトをブラウザが取得する手順は HTML Standard の Fetching scripts で規定されています。

依存先となるスクリプトを取得するときは cors モードの fetch を行い、リクエストに含める origin や資格情報は最初の起点となるスクリプトを取得したときと同じ値を使うことになっています。つまり sub.js を取得するときも origin は example.jp で、 main.js を読み込んだ script タグに crossorigin 属性があればその値も引き継がれます。

このリクエストが拒否されるかどうかは通常の CORS リクエストの手続きに則ります。

1Like

Comments

  1. @beatbox4108

    Questioner

    回答いただきありがとうございます。
    importであっても、originの値はしっかり引き継がれるのですね。
    よくわかりました!

Your answer might help someone💌