2016-01-05 2 views
3

Я пишу приложение, которое представляет собой скрипт python, который использует привязки pyobjc для использования среды выполнения objc/cocoa на mac. Приложение (Présentation.app, средство презентации pdf для Mac) использует WebView для отображения произвольных веб-страниц.Как отключить защиту транспорта приложений для сценария?

С Mac OS X 10.11 защита транспорта приложений предотвращает загрузку любого веб-сайта без HTTPS. Эта функция может быть отключена (чтобы снова включить предыдущее поведение, то есть произвольную загрузку веб-страницы), установив в файле Info.plist файл NSAppTransportSecurity, как описано в документе here.

Однако мое приложение является скриптом и может использоваться из командной строки, не будучи связанным с .app. В этом случае у него нет Info.plist.

Я прочитал, что я могу add an Info.plist to a binary command line tool using the linker, но мне нужно решение для питона сценария ...

Любое предложение о том, как встроить info.plist в сценарий? Или любое решение для настройки безопасности приложений на транспорте через API, а не файл Info.plist?

ответ

2

Хорошо, я нашел способ отключить защиту транспорта приложений от самого скрипта. Оказывается, вы можете редактировать словарь информации из сценария после запуска, и изменения будут рассмотрены. Так что в начале сценария, я добавил:

from objc import YES 
from AppKit import NSBundle 
bundle = NSBundle.mainBundle() 
info = bundle.localizedInfoDictionary() or bundle.infoDictionary() 
info['NSAppTransportSecurity'] = {'NSAllowsArbitraryLoads': YES} 

и это все.

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