首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xmpp Opera引发安全错误

问xmpp Opera引发安全错误
EN

Stack Overflow用户
提问于 2012-03-03 01:57:25
回答 3查看 612关注 0票数 0

编程大师!我根据"XMPP编程“一书创建了一些聊天工具,因此在我的项目中包含了strophe.js和gab.js。一切都很好,IE和Firefox中的服务都能正常工作。但不是Opera,在本例中Opera抛出一个异常

代码语言:javascript
复制
Uncaught exception: ReferenceError: Security violation
Error thrown at line 2554, column 16 in <anonymous function: _processRequest>() in http://chat.aviportal.com/strophejs/strophe.js:
req.xhr.send(req.data);
called from line 2566, column 16 in <anonymous function: _processRequest>(i) in http://chat.aviportal.com/strophejs/strophe.js:
sendFunc();
called from line 2607, column 12 in <anonymous function: _throttledRequestHandler>() in http://chat.aviportal.com/strophejs/strophe.js:
this._processRequest(0);
called from line 2709, column 16 in <anonymous function: _onRequestStateChange>(func, req) in http://chat.aviportal.com/strophejs/strophe.js:
this._throttledRequestHandler();

如果有人有类似的问题,请让我知道,或者,我会听取你的建议。先谢谢你,亚历克斯

编辑:好的,首先,感谢你的回复!

代码语言:javascript
复制
$(document).ready(function() {
    var conn = new Strophe.Connection(
        'http://chat.aviportal.com:5280/xmpp-httpbind');

    conn.connect('guest2@chat.aviportal.com', 'passwd', function (status) {
    if (status === Strophe.Status.CONNECTED) {
        $(document).trigger('connected');
    } else if (status === Strophe.Status.DISCONNECTED) {
        $(document).trigger('disconnected');
    }
});

这就是我初始化strophe连接的方式,进程在Guest2(‘conn.connect 2@ that .aviportal.com’等)上发出异常。顺便说一句,什么是CORS,跨域请求?在与php文件相同的子域上的ejabberd,所以我不认为,但是,有一个小的可能性是^_^

EN

回答 3

Stack Overflow用户

发布于 2012-03-04 18:18:25

尽管您的the服务器与ejabberd运行在同一个域上,但访问不同的端口确实会构成跨域请求,并应引发安全异常。因此,连接到domain:5280与连接到domain:80是不同的。

要简单地解决这个问题,你应该在你的设置中包含一个代理。你很可能已经在前面安装了apache或nginx,所以你只需要代理domain:80/http-bind转到domain:5280即可。例如,对于nginx,您应该具有如下内容:

代码语言:javascript
复制
    location /http-bind {
        proxy_buffering off;
        tcp_nodelay on;
        keepalive_timeout 55;
        proxy_pass http://localhost:5280;
    }

在你的nginx.conf里。

票数 1
EN

Stack Overflow用户

发布于 2013-05-24 23:08:32

你也可以不用Jquery来解决这个问题!

在要从中获取数据的文件头中添加以下内容:

代码语言:javascript
复制
Access-Control-Allow-Origin: *
票数 1
EN

Stack Overflow用户

发布于 2012-03-03 15:02:15

如果您使用的库是基于jQuery的,请尝试将其放入您的文件中:

jQuery.support.cors = true;

此错误是由Opera阻止跨站点请求引起的。如果服务器端脚本允许,CORS将允许从普通网页发出跨站点请求。阅读更多here。

目前,Opera只允许在扩展中跨站点请求,只要你在config.xml文件中使用specify it。然而,即便如此,如果您试图在扩展中使用jQuery来发出XSS请求,您将会遇到安全冲突,除非您在文件中包含了我在开头提到的行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9538086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档