1. ホーム
  2. google-chrome

[解決済み] Chrome 48+のDisable-web-securityについて

2022-12-27 13:21:26

質問

私は --disable-web-security フラグがあります。Windows 上の Chrome 48 および Chrome 49 ベータで動作しません。

すべてのインスタンスを停止し、再起動し、最初にフラグを使用して Chrome を実行し、異なるマシンも試しました。ベータ版では、警告ポップアップ ("You are using unsupported flag...") が表示されますが、CORS はまだ強制されています。公開バージョンでは、フラグを完全に無視するようです。

この件に関するニュースや人々の報告はないようなので、ローカルな問題かもしれません。 ヘルプまたは関連する情報があればありがたく思います。

どのように解決するのですか?

2021年10月18日更新

Chrome 95の時点で、MacOSとWindowsで。 --disable-site-isolation-trials は Web セキュリティを無効にするために必要なフラグのままなので、以下に示す Chrome へのコマンドライン引数はまだ有効です。(警告が表示されるように、いくつかの引数は Chrome によって正式にサポートされていません)。

Web セキュリティを無効にして Chrome を正常に起動したかどうかをテストするには、以下のスニペットを実行します。 ウェブセキュリティテスト を実行してください。

2020-04-30更新

Chrome 81では、Chromeの起動時に必ず --disable-site-isolation-trials で、空でないプロファイルパスは --user-data-dir を使うことで --disable-web-security が有効になります。

# MacOS (in Terminal)
open -na Google\ Chrome --args --user-data-dir=/tmp/temporary-chrome-profile-dir --disable-web-security --disable-site-isolation-trials

# Windows (from "Run" dialog [Windows+R] or start menu in Windows 8+)
chrome.exe --user-data-dir=%TMP%\temporary-chrome-profile-dir --disable-web-security --disable-site-isolation-trials

(推測) デフォルトのプロファイルで Web セキュリティを無効にしてブラウザを起動することによる高いセキュリティ リスクを軽減するために、Chrome は空でないプロファイル パスを要求していると思われます。参照 --user-data-dir=--user-data-dir=/some/path は、以下の詳細を参照してください。

謝辞 スネビョルン のコメントで Chrome 81 のヒントをいただきました。


2020-03-06 更新

Chrome 80(もしかしたらもっと前かもしれない)の時点で、フラグ --user-data-dir=/tmp/some-path --disable-web-security --disable-site-isolation-trials はもはや Web セキュリティを無効にしません。 .

Chromium のコードベースがいつ後退したかは不明ですが、Chromium の古いビルドをダウンロードすると、(以下のように の簡単でない手順" に従ってください。 を実行)することが、私が見つけた唯一の回避策です。私は最終的にバージョン 77.0.3865.0 を使用しましたが、これはこれらのフラグで適切に Web セキュリティを無効にします。


元の投稿 2019-11-01

Chrome 67+では、Chromeに渡すために --disable-site-isolation-trials フラグを渡す必要があります。 --user-data-dir=--disable-web-security を追加することで、ウェブセキュリティを本当に無効にすることができます。

MacOS では、完全なコマンドは次のようになります。

open -na Google\ Chrome --args --user-data-dir= --disable-web-security --disable-site-isolation-trials

について --user-data-dir

について David Amey の回答 を指定する必要があります。 --user-data-dir= を指定する必要があります。 --disable-web-security オプションを尊重します。

--user-data-dir=--user-data-dir=/some/path

を通して空のパスを渡しますが --user-data-dir=--disable-web-security で動作しますが、デフォルトの Chrome プロファイルを使用するため、セキュリティ上推奨されません。Chrome のセキュリティを無効にすると、アクティブなセッションは、追加のブラウザ内エクスプロイトに対して脆弱になります。

したがって、Chrome プロファイルの代替ディレクトリとして --user-data-dir=/tmp/chrome-sesh などと記述しておくとよいでしょう。クレジットに James B がコメントで指摘してくれたことに感謝します。

ソース

この修正は、ブラウザテストフレームワークCypressの中で発見されました。 https://github.com/cypress-io/cypress/issues/1951

ウェブセキュリティテスト

このスニペットを実行して、このソリューションが Google Chrome で実際に Web セキュリティを無効にすることを確認します。

window.addEventListener("DOMContentLoaded", () => {
  const iframe = document.querySelector("iframe");
  iframe.addEventListener("load", () => {
    const canAccessIframeDocument = !!iframe.contentDocument;
    document
      .querySelector(
        canAccessIframeDocument ? ".security-disabled" : ".security-enabled"
      )
      .classList.remove("hidden");
  });
  // To ensure the `load` event always fires, only set iframe src after the
  // event listener is attached.
  iframe.src = "https://google.com";
});
body {
  font-family: sans-serif;
}

.hidden {
  display: none;
}

/* Web security should normally be enabled, so this is colored green, despite
   the objective of this solution to disable it. */
.security-enabled {
  font-weight: bold;
  color: darkgreen;
}

.security-disabled {
  font-weight: bold;
  color: darkred;
}
<h1>Web Security Test</h1>
<p>
  This test attempts to access the inner contents of a cross-origin iframe,
  which is normally disallowed.
</p>
<p class="security-enabled hidden">
  Web security is enabled. The cross-origin iframe document could not be
  accessed.
</p>
<p class="security-disabled hidden">
  Web security is disabled. The cross-origin iframe document was
  successfully accessed.
</p>
<iframe class="hidden">
  Iframes are not supported.
</iframe>