SecurityException 1000, даже если используется тот же домен - PullRequest
0 голосов
/ 14 апреля 2011

Я сталкиваюсь с проблемой Javascript / Firefox. Соответствующий код указан ниже.

В основном происходит следующее:
1. document.ready запускает и инициирует AJAX-запрос (к document.domain: 8484 / getTrack.php или как угодно)
2. Ответ AJAX получен. Этот ответ содержит URL (тот же домен) расположения изображения. Итак, sourceImage.onload установлен, затем sourceImage.src установлен
3. sourceImage.onload срабатывает. Идея состоит в том, чтобы сохранить в памяти изображение с измененным размером, которое идеально соответствует холсту, на котором оно будет нарисовано. Я хочу сохранить это изображение с измененным размером в памяти, потому что я буду много раз записывать его (часть) на свой холст, и каждый раз изменение размера должно быть намного медленнее.


    var SourceImage = new Image();
    var preparedImageData;

    sourceImage.onload = function() { 
        var canvas = document.createElement('canvas');
        canvas.width = 100; canvas.height = 100;
        var ctx = canvas.getContext("2d");        
        // resize image
        ctx.drawImage(sourceImage, 0, 0, sourceImage.width, sourceImage.height, 0, 0, canvas.width, canvas.height);    
        // save as imagedata
        try {
            try { 
                preparedImageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
            } 
            catch (e) { 
                netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                preparedImageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
            }                          
        }
        catch (e) {
            throw new Error("unable to access image data: " + e)
        }
    }

Первый бросок вызова getImageData и вызов enablePrivilege также генерируют немедленно. Текст ошибки: «Сценарию из« http://127.0.0.1" было отказано в привилегиях UniversalBrowserRead. ». Я проверил, и кажется, что эти сообщения должны появляться только при попытке получить доступ к getImageData для изображения из другого домена, хотя это не так. (верно?). У меня нет строгой политики безопасности (все по умолчанию), Firefox 4.0. Тот же код отлично работает в Chrome.

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

При «том же происхождении» относительно Одинаковой политики происхождения протокол, имя хоста И порт должны быть идентичны Я предполагаю, что вы используете разные порты здесь?

Мне кажется, что ваш вызов на netscape.security.PrivilegeManager.enablePrivilege завершился неудачно из-за того, что скрипт не был подписан - вы пытались удалить этот код?

0 голосов
/ 16 апреля 2011

Вызовы context.getImageData и PrivilegeManager.enablePrivilege завершаются неудачно, как только я установил document.domain = document.domain, что делается для взаимодействия с фреймами, размещенными на другом поддомене.В качестве обходного пути я проксировал domain.tld / subdomain / на subdomain.domain.tld / и получил желаемый результат.

...