編集: プロジェクトをクロム拡張としてロードしているときに、この問題が発生しました。これはChrome拡張機能固有の問題である可能性があると思います。
Google のカスタマイズされた検索エンジンで検索しようとすると、結果ページが表示されますが、空白です。調べると、次のエラーが表示されます。
スクリプト ' http://clients1.google.com/complete/search?client=partner&hl=en&sugexp=gsno …208%3Avdsj6wr1edq&types=t&ds=cse&cp=1&gs_id=4&q=m&callback=google.sbox.p50' のロードを拒否しました。次のコンテンツ セキュリティ ポリシー ディレクティブに違反しています: "script-src 'self' 'unsafe-eval' https://*.google.com"。
これは、スクリプトが「http」を使用しているためだと思います。Google のコンテンツ セキュリティ ポリシーに基づく「http」オリジンは受け入れられません
中間者攻撃は些細なものであり、HTTP では検出できないため、これらの発信元は受け入れられません。- https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing
私のhtml:
<html>
<head>
<script src="fact.js"></script>
</head>
<body>
<div id="gcse-search-bar">
<gcse:search defaultToImageSearch="true"></gcse:search>
</div>
</body>
</html>
私のjsファイル。私の場合、それは call fact.js です
document.addEventListener('DOMContentLoaded', function() {
(function() {
var cx = '016674471602576918208:vdsj6wr1edq';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
});
私のmanifest.json:
{
"manifest_version": 2,
"name": "my extension",
"content_security_policy": "script-src 'self' 'unsafe-eval' https://*.google.com; object-src 'self'",
"description": "my extension",
"version": "1.0",
"browser_action": {
"default_icon": "my.png",
"default_popup": "my.html"
},
"permissions": [
"activeTab",
"http://*/*",
"https://*/*",
"https://En.wikipedia.org/*",
"http://*.google.com/"
],
"content_scripts": [{
"js": ["fact.js"],
"matches": ["http://*/*", "https://*/*"]
}]
}
HTTP ではなく HTTPS を使用して結果を返すにはどうすればよいですか?