跨站点脚本帮助?
Posted
技术标签:
【中文标题】跨站点脚本帮助?【英文标题】:Cross site scripting help? 【发布时间】:2011-02-24 10:23:15 【问题描述】:我在码头服务器上执行了一段 javascript,该服务器正在向另一台服务器(wamp 服务器)上的 scoket 发送 XMLHTTPRequest。 请求被发送到套接字,但是 XHR 响应似乎被阻止了。 我对此的唯一想法是这可能是 XSS(跨站点脚本)的问题。 有没有一种方法可以让我为这个特定的请求启用跨站点脚本,或者我应该做些什么? 任何帮助将不胜感激!
【问题讨论】:
“请求被发送到套接字”——你是如何确定的?我建议不,这根本没有发生。因为这将是一个全面的安全风险。 我通过检查 php 服务器上的日志来确定这一点,在那里我可以看到我在 php 套接字的帖子上得到了 200。 【参考方案1】:这听起来很对。浏览器跨域策略阻止对其他域的 XHR 请求。尝试使用JSONP 技术来规避此问题。
跨域策略这么容易被规避可能看起来很奇怪,但那是因为当服务器公开 JSONP 接口时,这显然是一种相互协议。
祝你好运!
【讨论】:
您的回复刚刚节省了我的 a$$, JSONP FTMFW :P【参考方案2】:看看here,这让您可以在不使用 JSONP 的情况下跨域边界公开一个 ajax 端点——它的普通 XHR 顶部有一点跨域消息传递。
有关跨域 ajax 的确切示例,请参阅此http://consumer.easyxdm.net/current/example/xhr.html
顺便说一句,这就是俄罗斯版 Facebook(vkontakte,75 多位用户)用于其 API 的内容。
【讨论】:
这是我发送帖子的方式.. function sendInitRQ(width, height) var post = "您不能向其他服务器发出 xmlhttprequests。你有两个选择
通过提供 javascript 的服务器代理一切。 使用<script>
标记使用该服务器上动态生成的js 从其他服务器提取数据。
【讨论】:
哦,是的,您可以 :) IE 具有 XDomainRequest,并且大多数较新的浏览器都支持 CORS。所以说你不能说是错误的,但说你可以,而不提及在哪些浏览器上也是错误的。【参考方案4】:感谢大家的回复,但我实际上发现问题出在相同的源策略上,因为我从同一主机运行两台服务器,但端口号不同。 JSONP 似乎可以解决问题,但为了完整起见,我将尝试现在只使用一台服务器。
以下文章在背景标题下解释了我的问题。 并在表格的第四列中。
http://taossa.com/index.php/2007/02/08/same-origin-policy/
【讨论】:
以上是关于跨站点脚本帮助?的主要内容,如果未能解决你的问题,请参考以下文章