可以使用easyXDM(或任何其他客户端框架)进行HTTP服务可用性测试(或一般的响应解析)



我无法从文档中看到它应该如何工作。使用Firebug进行调试也没有帮助。也许我得坐上几个小时才能更好地理解它。

基本问题是,我想检查各种地理服务的可用性(WFS, WMS)。由于XSS浏览器限制的问题,XmlHttpRequest无法工作。

我猜Socket接口是正确的使用,因为我不能实现一些CORS场景,因为我对外部服务没有影响。

使用以下代码可以正常工作并返回一些请求的数据(Firefox会弹出下载的XML响应):

var socket = new easyXDM.Socket({
    remote: "http://path.to/provider/", // the path to the provider
    onReady:function(success) {
        alert(success);  // will not be called
    }
    onMessage:function(message, origin) {
        alert(message, origin);  // will not be called
    }
});

然而,我没有找到的方法(尝试使用onReadyonMessage回调)以某种方式获得一些HTTP status对象,我可以处理以确定哪种响应,例如。200, 404 ,我得到了。

也许这是完全错误的解决方法?

遗憾的是,即使我的赏金也没有帮助我得到答案,所以我自己快速浏览了一下,收集了更多关于这个问题的信息…第一次…

XSS一般问题

看看XSS和一些相关的问题/链接,讨论的问题比解决方案更多(这是可以的)。

查看相关的Firefox文档关于JavaScript同源策略,很明显我们的全球口号安全高于自由1也适用于这个领域。(就我个人而言,我不喜欢这种解决问题的方法,我希望看到另一种方法来解决这些问题,就像这个答案末尾所描述的那样。)

1:出自本杰明·富兰克林(美国开国元勋)之口:为了安全而牺牲自由的人不配得到这两者

CORS解决方案(=>外部服务器依赖性)

唯一支持的标准/健壮的方法似乎是使用CORS (跨域资源共享)功能。基本上,这意味着外部服务器必须至少交付一些CORS兼容的信息(HTTP头Access-Control-Allow-Origin: * ),以允许其他人(=客户端浏览器)请求数据/内容/....也意味着,如果没有对外部服务器的控制,将没有通用的健壮的客户端/浏览器方式来完成此操作:-(.

服务器/客户端应用程序的健壮解决方案(如果没有外部服务器控制)

因此,如果我们的外部服务器不支持CORS或者它没有被配置为我们的请求者原点(协议/域/端口组合)可用,那么似乎最好在我们自己的应用程序服务器端进行这种访问,我们没有这些类型的限制,但当然还有其他含义。

客户端解决方案我希望看到

首先介绍一下我作为一个标准用户浏览网页时所经历的客户端世界…

我个人不喜欢在浏览网页时被跟踪,也不喜欢因硬件或网络资源不佳而减慢速度,也不希望在浏览网页时暴露于简单避免的数据安全问题。这就是为什么我使用Firefox的各种有用的插件,如RequestPolicyAdBlock PlusGhosteryCookie MonsterFlashblock ... .这已经显示出复杂性,一般用户通常无法处理。但是,特别是查看RequestPolicy,它显示了如何在客户端处理对外部资源的访问。

因此,如果Firefox(没有这些插件)支持一些功能,向用户显示类似于RequestPolicy的对话框,它可以声明如下内容,我们可以放松一个源策略:
  [x] 'http://srcdomain.com' (this site)
  [ ] all sites  (select to block/allow for all sites)
would like to request some data from 
  [x] 'http://dstdomain.com'
  [x] 'http://dst2domain.com' 
in a generally considered UNSECURE way.
You can selected one of the following options about how to proceed with
access to the selected sites from the selected sites:
  [x] block always (generally recommended)
  [ ] block only for this session
  [ ] allow always (but not to subreferences)  [non-recursively]
  [ ] allow only for this session (but not to subreferences)  [non-recursively]
  [ ] allow always (and all subreferences)  [recursively]
  [ ] allow only for this session (and all subreferences)  [recursively]

当然,这应该制定尽可能清楚的普通用户,我当然没有在这里做,也可以在默认设置中处理,就像其他现有的技术(Cookie处理,JavaScript处理,…)做它。

这样我就可以解决问题,没有太多的麻烦,因为我可以很好地处理在我的情况下需要的用户设置的数量。

关于easyXdm的回答

我想既然他们推荐CORS,这是唯一可靠的方法,尽管一些变通方法可能仍然存在,这取决于浏览器/版本/插件,如Flash等可能存在。

相关内容

  • 没有找到相关文章

最新更新