Как настроить WebView для разрешения getImageData на холсте из локальных или удаленных файлов? - PullRequest
4 голосов
/ 09 января 2011

В моем приложении есть WebView, и я хотел бы иметь возможность отключить функцию безопасности, запрещающую ctx.getImageData на холсте, где было нарисовано изображение с локального (file:// url) компьютера.

Кажется, в делегате политики нет метода, позволяющего это сделать. Теперь я мог бы реализовать сервер в своем приложении, чтобы он действовал как прокси, но это кажется излишним. Как мне решить эту проблему?

Ответы [ 4 ]

1 голос
/ 25 сентября 2013

Для меня WebView.setAllowFileAccessFromFileURLs решает проблему.

0 голосов
/ 12 января 2011

Я считаю, что это контролируется:

+[WebView registerURLSchemeAsLocal:]

Таким образом, если ваш холст лежит на странице с URL-адресом http:, сначала вы должны указать WebKit, что URL-адреса http должны быть локальными.

Это может иметь и другие потенциальные последствия для безопасности, особенно если ваше приложение пытается предоставить общий браузер. Обходным путем может быть использование пользовательской схемы URL для загрузки страницы и ее регистрации. Вам нужно будет поэкспериментировать.

Возможно, вы можете рассказать нам больше о странице, на которой находится холст?

0 голосов
/ 18 января 2011

Решение оказывается относительно простым:

  1. Загрузите исходный код webkit.
  2. Закомментируйте эти строки (1558 - 1561):

    if (!canvas()->originClean()) {
         ec = SECURITY_ERR;
         return 0;
    }
    
  3. Сложение.

  4. Добавьте его в качестве основы в XCode.
0 голосов
/ 12 января 2011

Вы пробовали использовать схему data: uri? Посетите:

data:text/html;base64,PGgxPlRoZSBNYWdpYyBXb3JkcyBhcmUgU3F1ZWFtaXNoIE9zc2lmcmFnZTwvaDE+

для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...