1

これに対する解決策がどこにも見つからないようです。別のサービスにデータを送信するための 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またはこの問題を回避する別の (より良い) 方法はありますか?

4

0 に答える 0