1

У меня есть сценарий содержимого, который включает компонент jquery ui, и я хочу отправить данные на мой сервер с http сообщение. Однако я понял, что вы не можете отправить сообщение http сообщение на https-сайт или наоборот. Если я отправлю свое сообщение на фоновый скрипт и сообщение от него, у меня будет проблема? Будет ли это иметь значение, если сайт http или https? Если это имеет значение, как я могу это сделать?Расширение Chrome Расширение фона и содержимого сценария

ответ

1

Если вы отправляете из фонового сценария нет никаких проблем с переключением протоколов, но вы должны были объявить разрешение на эти адреса:

видеть больше at the google manifest documentation и это duplicated question

+0

Не тот же вопрос. Кажется, я не могу отправить сообщение сообщения на мой сервер, если он является http, а один - https, что бы вы ни добавили в манифест. Но вы правы в том, что я могу отправить их из фона. Я попробовал это сейчас, и это сработало! Спасибо – mert

1

Да, вы может использовать HTTP POST, а также любой другой метод http (например, GET, PUT, PATCH) в сценарии содержимого, а также фоновый сценарий.

Однако в обоих случаях URL-адрес, по которому вы отправляете свой запрос, должен быть объявлен в разрешениях вашего расширения. Вы делаете это в манифесте. Например, если вы хотите, чтобы посылать запросы HTTP в http://www.some-domain.com, необходимо добавить, что URL (или шаблон, соответствующий этому URL) в permissions массив манифеста:

{ 
    ... 
    "permissions": [ 
     "http://www.some-domain.com/*" 
    ], 
    "name": "Test", 
    "manifest_version": 2, 
    "version": "0.0.0" 
} 

Вы можете добавить дикие карты в свой URL шаблоны разрешений; таким образом, если вы хотите совместить как https, так и http, вы можете сделать что-то вроде *://www.some-domain.com/*. See the official literature here.

Я должен предупредить вас, что если вы прикрепляете скрипт контента к странице, которая была загружена как https, а не http, вам, скорее всего, не удастся отправить незащищенный HTTP-запрос из-за блокировки Chrome смешанным контентом, что я считаю требуется переопределение пользователя. Таким образом, хорошее эмпирическое правило: если вы прикрепляете свой контентный скрипт к странице, загруженной через http, то используйте http для отправки запроса; если вы прикрепляетесь к странице, загруженной через https, используйте https.

Последний совет: не забудьте перезагрузить расширение после того, как вы изменили манифест, или изменения разрешения не будут отображаться. Чтобы перезагрузить расширение, перейдите на страницу chrome://extensions, найдите расширение и нажмите кнопку перезагрузки.

+0

Спасибо очень полезная информация, но это похоже на обходной путь. Я предпочитаю отправить свое сообщение на задний план и отправить запрос на отправку таким образом, но спасибо за информацию и советы в любом случае! – mert

+0

Это не обходной путь; это единственный способ сделать это. Единственный способ, которым вам будет разрешено отправлять HTTP-запросы в домен за пределами вашего происхождения chrome-extension, - это объявить шаблон соответствия URL-адресов в вашем манифестах, независимо от того, возник ли запрос в фоновой странице/скрипте или в скрипте содержимого , –

Смежные вопросы