Вопрос по – Расширение Chrome для кросс-доменного запроса

4

Я знаю, что об этом много раз говорили здесь, и я прочитал большинство этих тем, но, похоже, не могу заставить мой сценарий работать.

Проблема в том, что я пытаюсь использовать bitly API для сокращения URL-адресов в расширении Google Chrome. Я сохраняю логин и apiKey пользователей в localalstorage и проверяю их, прежде чем сделать это.

Код для этого:

$.ajax({
        url:"http://api.bit.ly/v3/validate",
        dataType:'jsonp',
        data:{
            login: login,
            apiKey: apiKey,
            x_login :"test",
            x_apiKey :"test"
        },
        success:function (jo, textStatus, jqXHR) {
            if (jo.status_code == 200) {
                setItem('dg_BitlyApiKey', apiKey);
                setItem('dg_BitlyLogin', login);
                alert('Saved');
            } else {
                alert('Incorrect login and/or apiKey!')
            }
        }
    });

У меня действительно установлены разрешения"permissions": ["tabs", "notifications", "http://*/*", "https://*/*"] но я все еще продолжаю получать:

Refused to load script from 'http://api.bit.ly/v3/validate?callback=jQuery17204477599645033479_1334062200771&login=&apiKey=&x_login=test&x_apiKey=test&_=1334062201506' because of Content-Security-Policy.

Сам сценарий работает вне расширения, поэтому я предполагаю, что проблема не в сценарии, а в разрешениях.

Что я здесь не так делаю?

Ваш Ответ

2   ответа
0

х запросов. Размещенное приложение не сможет выполнять кросс-доменные запросы. Увидеть:

Перекрестное происхождение XMLHttpRequest в расширениях Chrome

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Nick
5

Проблема в том, что вы на самом деле не выполняете запрос XHR, вы делаете запрос JSONP для небезопасного ресурса HTTP. Смотри вопросКак загрузить внешний JavaScript внутри всплывающего окна расширения и связанныеСообщение об ошибке хрома.

Yeah, we're no longer allowing insecure scripts in extensions. If you load a script over HTTP, an active network attacker can inject script into your extension, which is a security vulnerability.

JSONP работает путем динамического добавления нового тега сценария на вашу страницу и последующего выполнения содержимого. В вашем случае ресурс сценария выбирается по HTTP (а не по HTTPS). Если ваше расширение использует версию 2 манифеста расширения, его фоновые страницы не могут получать сценарии, отличные от HTTPS.

Solution: Если вы используете Bitly API поверх HTTPS, я думаю, что это решит вашу проблему.Send your Ajax call to https://api-ssl.bitly.com/v3/validate (вместо вашего текущего значенияhttp://api.bit.ly/v3/validate)

Похожие вопросы