Awesomium中的DOM异常18

时间:2012-06-01 14:47:18

标签: angularjs awesomium

我有一个从本地文件系统加载并使用awesomium呈现的网页,该页面正在使用AngularJS呈现页面的一部分。但是,我的AngularJS控制器的一部分产生了一个Dom Exception 18:

  

angular-1.0.0rc10.js @ line 5349错误:SECURITY_ERR:DOM异常18

似乎这个异常是由我的AngularJS控制器末尾存在此代码引起的:

$http({method: 'GET', url: 'http://placeholdermetaserver.appspot.com/list?format=json&game=Heist'})
.success(function(data)
{
    //Do stuff with data
});

奇怪的是,如果我使用直接的XMLHttpRequest而不是AngularJS $ http对象,一切都很好:

var request = new XMLHttpRequest();
request.onload = function() {
    //Do stuff with data
};
request.open("GET", "http://placeholdermetaserver.appspot.com/list?format=json&game=Heist", true);

当我只是在chrome中加载这个页面时,这个异常是而不是生成的(在本地文件系统之外,与awesomium相同)。

可能导致此问题的原因以及如何解决?

1 个答案:

答案 0 :(得分:0)

$http服务包括一些跨站点请求伪造(XSRF)对策。我对Awesomium并不是特别熟悉,所以我不确定它实现了哪些安全功能,但我会查阅文档(Awesomium和AngularJS)以获取更多信息。

http://docs.angularjs.org/api/angular.module.ng.$http

从服务器的角度来看,如果您发送GET请求,则很容易出现textbook XSRF img tag attack

  

http://myapp.com/doSomething/somegame/12345

从您的客户的角度来看,假设您提出的请求如下:

  

http://myapp.com/doSomething/somegame/”+ someId

聪明的黑客可能会哄骗某些人:

"@123.45.56.689/myEvilFakeJson.json"

在这种情况下,请求不是针对您的服务器,而是针对某些请求 另外一个。如果您对请求的位置进行硬编码或谨慎处理清理输入,则可能不会有那么大的风险。