これに対する解決策がどこにも見つからないようです。別のサービスにデータを送信するための Chrome 拡張機能を作成しています。その機能は、安全な URL にあるサードパーティ API に基づいています。問題は、https URL を機能させることができず、代わりに次のエラーが発生することです。
Refused to load the script 'http://app.something.com/api/v1/idea/create?apikey=...&summary=test&_=1376649061760' because it violates the following Content Security Policy directive: "script-src 'self' https://app.something.com".
URLの権限https
が追加され、content_security_policy
が で定義されますmanifest.json
。後者が正しく定義されているかどうかは完全にはわかりませんが。
マニフェスト.json
"permissions": [
"contextMenus",
"tabs",
"storage",
"http://*/*",
"https://*/*",
"<all_urls>"
],
"content_security_policy": "script-src 'self' https://app.something.com; object-src 'self'",
popup.js
$('#save').click(function(event) {
event.preventDefault();
var apiUrl = 'https://app.something.com/api/v1/idea/create?apikey=';
var apiKey = localStorage.getItem('apiKey');
var summary = document.getElementById('summary');
var title = document.getElementById('title');
$.ajax({
url: apiUrl + apiKey,
type: 'POST',
dataType: 'jsonp',
data: (function(title, summary) {
var data = {};
if(title) data["title"] = title;
if(summary) data["summary"] = summary;
return data;
})
($("#title").val(),$("#summary").val()),
success: function (data) {
...
}
popup.html
<form action="" class="apiform" id="api">
<input type="text" id="apikey" placeholder="Please enter your API key ...">
<button type="submit" id="saveKey" form="api" disabled>Save</button>
<a class="hint" href="#">Need help generating your API key?</a>
</form>
<form action="" class="idea" id="idea">
<p class="label">Enter idea summary</p>
<textarea name="summary" id="summary" rows="5" required></textarea>
<p class="label">Name your idea <span class="hint">(optional)</span></p>
<input type="text" name="title" id="title">
<div class="buttons">
<button type="button" class="secondary" id="cancel">Cancel</button>
<button type="submit" class="primary" id="save" disabled>Save</button>
</div>
</form>
<script src="jquery.min.js"></script>
<script src="popup.js"></script>
</body>
私の質問は:
を使用してこれを回避できますか、$.ajax
またはこの問題を回避する別の (より良い) 方法はありますか?