web-dev-qa-db-ja.com

スクリプトにより、「インラインスクリプトの実行が拒否されました:インライン実行を有効にするには、「unsafe-inline」キーワード、ハッシュ…、またはノンスが必要です」

このエラーが発生し続けます:

次のコンテンツセキュリティポリシーディレクティブに違反しているため、インラインスクリプトの実行を拒否しました: "default-src 'self' data:gap: http://www.visitsingapore.comhttps:// ssl.gstatic.com 'unsafe-eval' "。インライン実行を有効にするには、「unsafe-inline」キーワード、ハッシュ(「sha256-V +/U3qbjHKP0SaNQhMwYNm62gfWX4QHwPJ7We1PXokI =」)、またはノンス(「nonce -...」)のいずれかが必要です。また、「script-src」は明示的に設定されていないため、「default-src」がフォールバックとして使用されることに注意してください。

誰もこれを解決する方法を教えてもらえますか?私のコードは:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data:gap: http://www.visitsingapore.com   https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="css/index.css">
<link rel="stylesheet" href="css/jquery.mobile-1.4.5.css">
<script src="lib/jquery-3.2.1.min.js"></script>

<script type="text/javascript" src="scripts/key.js"></script>
<script>$.ajax({
        url: ' http://www.visitsingapore.com/api.listing.en.json',
        type: 'GET',
        beforeSend: function (xhr) {
            xhr.setRequestHeader('email ID', '[email protected]');
            xhr.setRequestHeader('token ID', '-------');
        },
        data: {},
        success: function (qwe12) {
            var TrueResult2 = JSON.stringify(qwe12);
            document.write(TrueResult2);
        },
        error: function () { },
    });</script>
7
Yi Kiat

これを修正する最良の方法は、その$.ajax(…)呼び出しをドキュメントから取り出し、それをajax-call.jsという外部ファイルに移動してから、これを行うことです:

<script src="ajax-call.js"></script>

より良い理由は、既にドキュメントのCSPポリシーを設定する努力をしている場合、すべてのインラインスクリプトを削除するという追加の努力に進むべきだということです。

ただし、何らかの理由でドキュメント内でそのスクリプトをインラインに保つ必要がある場合必要な場合、そのmeta要素を変更して、正確なsha256エラーメッセージのハッシュ値は、次のようにscript-srcディレクティブのソースとして含まれています(読みやすくするためにいくつかの改行が追加されています)。

<meta http-equiv="Content-Security-Policy"
  content="default-src 'self' data:gap: http://www.visitsingapore.com 
  https://ssl.gstatic.com 'unsafe-eval';
  style-src 'self' 'unsafe-inline';
  media-src *;
  script-src: 'sha256-V+/U3qbjHKP0SaNQhMwYNm62gfWX4QHwPJ7We1PXokI='
">

そして、もう少し情報を得るためのいくつかの場所:

4
sideshowbarker