1

Tomcat と AngularJS (v1.2.14) を使用して作成されたアプリケーションがあります。web.xml で ContentSecurityFilter を/*に設定し、構成でポリシー ルールを設定して、同じオリジンを許可し、eval を許可し、安全でないインラインを許可します。

https://mysite.com/my/app/urlを index.jsp にマップしました。これにより、最終的に次のことが行われます。

<div id="ng-app" ng-app="myApp" ng-csp>
  <div ng-include="'/my/app/url/static/pages/partials/wizard.html'" class="container-fluid"></div>
</div>

wizard.html は、真のアプリケーションの処理が行われている場所です。AngularJS ディレクティブなどがたくさんあります。

この設定IE と FF では機能しますが、CH では機能しません。Chrome で my/app/url にアクセスしようとすると、wizard.html が表示されません。index.jsp の残りの部分は正常に表示されます。開発ツールに行くと、wizard.html で次のエラーが発生することがわかります。

リソースの読み込みに失敗しました: サーバーは 401 (未承認) のステータスで応答しました

サーバーログにエラーはありません。web.xml で CSP フィルター マッピングを無効にすると、Chrome が正常に動作し始めます。ただし、セキュリティ上の理由から CSP フィルターが必要です。

これを修正する方法を知っている人はいますか?どんな助けでも大歓迎です!

4

1 に答える 1

0

解決策は思いがけずやってきました。それは物事の「完璧な嵐」でした。

css | js | ...などのものを除外していたがhtmlファイルは除外していた401に対処するために、web.xmlにフィルターを設定しました。そのため、html ファイルに対して 401 エラーが返されました。CSP は、サーバーから取得したものが気に入らなかったため、wizard.html ファイルのロードをブロックしました。

したがって、通常、CSP は何が起こったのか、どのような理由で発生したのか (「そのようなファイルは、そのようなコンテンツ セキュリティ ポリシーに違反しているため、ブロックされた」など) について具体的に説明しますが、これは CSP から部分的にしか発生していないため、それ自体が取得したエラーを返しただけです。これは 401 だったので、この紛らわしい状況が生じました。

除外ファイルのリストにhtmlを追加することで、問題を解決しました。

于 2014-03-28T17:31:32.983 に答える