arkor dev を実行したときに起動するローカル Web UI です。あなたのマシーン上で動き、同じ CLI プロセスとループバック越しに話し、dev サーバーを止めれば消えます。サインアップも公開 URL もありません。
http://localhost:4000(arkor dev --port で変更可)で開いてください。
レイアウト
ヘッダーには現在の identity が<mode> · <org>[ / <project>][ · <baseUrl-host>] の形で表示されます。mode は anonymous か auth0。クラウド API ホスト suffix は CLI が本番エンドポイントを指しているときは隠され、それ以外で表示されます。
3 ページ、アプリ内ナビで切り替えます:
アーキテクチャ
/api/* リクエストごとに 3 つのチェックが走ります:
- Host ヘッダーのガード。
127.0.0.1とlocalhostのみ受理。127.0.0.1に DNS リバインディングされる悪意あるサイトに誘導された被害者でも、送信されるのはHost: evil.comで、ミドルウェアは HTTP 403 で拒否します。 - 起動ごとの CSRF トークン。
arkor devは起動ごとに 32 バイトのトークン(base64url)を生成し、<meta name="arkor-studio-token">としてindex.htmlにインジェクトし、すべての/api/*呼び出しに必須化します(ヘッダーX-Arkor-Studio-Token、またはEventSourceリクエスト用に?studioToken=)。クロスオリジンタブは meta を読めないので、preflight をスキップする「simple」なクロスオリジン POST も拒否されます。比較はtimingSafeEqual。 - CORS なし。 SPA は同一オリジンなので CORS は価値を加えません。
*を反射すると「simple」なクロスオリジン POST(text/plain、urlencoded)を素通りさせてしまうので、トークンチェックがそれを拒否します。
arkor dev 起動のたびにローテートされるので、前回起動時の古いタブはリロードするまで HTTP 403 で失敗します。
今日できること
まだないもの
これらは SDK や HTTP API レベルでは存在しますが、Studio UI としては今のところありません:Studio を使うべきでない場面
Studio は開発ツールです。ループバックでのみ、arkor dev が立ち上がっている間だけリッスンし、起動ごとに CSRF トークンをローテートします。プロダクション利用では Studio にユーザーを向けるのではなく、自前のアプリケーションコード(あるいは出荷するサービング層)から infer を呼んでください。