kitのクロスオリジン問題に対応する

kitをローカルディレクトリなどで動作させる場合、アプリケーションの読み込みなどがファイルアクセスのクロスオリジン制限により失敗する場合があります。

同一のオリジンであるにもかかわらず、Blink環境ではHTTP等でないとしてCORSポリシーによりアプリケーションファイルの読み込みが制限されます。

・エラーの一例(コンソール)

Access to XMLHttpRequest at ‘file:///C:/kit/app/alert/define.json’ from origin ‘null’ has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

この現象はGecko環境での発現は確認されていませんが、Blink環境(Chromiumなど)では特定の方法でエラーを回避する必要があります。その方法を以下に示します。

Windows版の場合

起動オプションを以下のようにしてショートカットなどに設定します。

“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” –allow-file-access-from-files –start-fullscreen –app=file:///C:/kit/index.html

引数appに指定するパスは適宜kitを配置しているパスに置き換えてください。また、kitディレクトリ直下にはkit.lnkというファイル名で上記のようなショートカットファイルを用意しています。これをデスクトップなどにコピーして使用すると簡単です。

Mac版の場合

ターミナルから

open “/Applications/Google Chrome.app” –args –app=file:///(ここに置いたディレクトリ)/kit/index.html -allow-file-access-from-files

を実行することで問題を回避できます(同様に、kitのパスを指定してください)。また、Automatorなどを利用して上記のコマンドをappファイルなどにパッケージ化すると便利です。

Flagsを用いる方法(プラットフォーム共通)

試験的な設定項目を利用してCORS制約の問題を回避する方法があります(利用は自己責任です)。

Flagsにアクセスし、Out of blink CORSの項目を有効化します。

chrome://flags/#out-of-blink-cors

Operaの場合

opera://flags/#out-of-blink-cors

この設定を有効化すれば、Blink環境下でローカルディレクトリ上のkitカーネルを動作させることができます。

コメントを残す