首页 文章

SecurityException 1000,即使使用相同的域

提问于
浏览
0

我遇到了麻烦的Javascript / Firefox问题 . 相关代码如下 .

基本上会发生以下情况:

  1. document.ready触发并发起一个AJAX请求(对于document.domain:8484 / getTrack.php或其他)
    2.收到AJAX响应 . 此响应包含图像位置的URL(相同域) . 因此,设置sourceImage.onload,然后设置sourceImage.src
  2. 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

    通过'same origin' ref Same Origin Policy,协议,主机名和端口需要相同 . 我猜你在这里使用不同的端口?

    我认为发生的是由于脚本不是signed而您对 netscape.security.PrivilegeManager.enablePrivilege 的调用失败 - 您是否尝试删除此代码?

  • 0

    设置 document.domain = document.domain 后, context.getImageDataPrivilegeManager.enablePrivilege 调用失败,这是为了与托管在不同子域上的iframe合作完成的 . 作为一种解决方法,我将domain.tld / subdomain /代理到subdomain.domain.tld /并获得了所需的结果 .

相关问题