scriptタグのsrc属性への指定ではCGIが動かない理由が知りたいです。
Q&A
Closed
CGIの挙動についての質問です。
APIキーの隠蔽について調べていたときに、このQiitaの投稿に行き当たりました。
Google Maps API キーをHTMLから隠す方法
詳しくは当該記事をご覧いただければと思うのですが(そこまで長い記事ではありません)、この記事で紹介されている手法は、「リクエストを受けると、JavaScriptコード文字列を返すCGIを用意。クライアントサイドでfetch APIを使ってこのCGIにリクエストを飛ばし、返ってきたコード文字列をeval()で実行」というものです。
私はここで、スクリプト側からリクエストを飛ばしてeval()しなくても、scriptタグで外部スクリプトとして指定しておけばブラウザが勝手にリクエストから実行までやってくれるのではないかと考えました。
つまり、
fetch("/cgi-bin/getapijs.py").then(res=>{
return res.text();
}).then(mytext => {
eval(mytext);
});
と書くところを、
<script src="/cgi-bin/getapijs.py"></script>
と書くことができそうに感じた次第です。
そこで、どうしてscriptタグが使えないのかという旨の質問のコメントをしたところ、
筆者さんから
JAVAScript のコードを取得するためには、まず python が動く必要があります。python が動くためには直接 script タグではダメなのです。
というお返事をいただきました。
ただ、それでもscriptタグではPythonが動かない理由が、どうにも理解できませんでした。
なぜfetchによるリクエストとscriptタグによる外部リソースリクエストでCGIの挙動が異なるのか、ご教示いただきたいです。