【问题标题】:cross domain ajax requests [closed]跨域ajax请求[关闭]
【发布时间】:2012-09-12 00:20:29
【问题描述】:

跨域 ajax 请求被拒绝,但我可以通过以下方式解决它:

$(document).ready(function () {
  var data = ...;
  $('<img>').attr('src', 'http://domain.com?data=' + escape(data)).appendTo('body');
});

因此,如果我真的需要,我可以发送数据到另一个域。我也可以以相同的方式获取数据,但在加载时我可以将其移动到画布上,然后读取像素。

那么这个限制的意义何在?它可以从中节省什么?

【问题讨论】:

  • 服务器可以拒绝对进行更新的 URL 的 GET 请求,换句话说,要求请求是 POST 请求。

标签: javascript html ajax post request


【解决方案1】:

当图像来自另一个域时,您仍然无法在 javascript 中读取图像的像素。所以你什么都没绕。

如果没有服务器的协作,页面无法操作甚至读取来自另一个域的内容。这可以保护用户免受许多操纵(谷歌 XSS 攻击)。

【讨论】:

  • 不,你不能。试试看:您的 javascript 无法分析来自其他域的图像。
  • 使用脚本发送来自其他域的域数据?也许您的问题不清楚:您要做什么却没有明确允许?
  • 您没有证明可以将来自未明确允许的其他域的数据发送到您的域。
  • 没有保护措施,也没有理由拥有一个。另一个域将在没有安全漏洞的情况下对这些数据做它想做的事。阅读昆汀的另一个答案。
【解决方案2】:

那么这个限制的意义何在?它可以从中节省什么?

重点是防止您的网站读取来自远程网站的数据,而不是防止它发送数据。

例如,您不能让我的浏览器转到我的银行并获取我的帐户详细信息,以便将它们发送到您的网络服务器。

同源策略不会阻止您提交将资金转移到您的服务器的请求,但这就是为什么网站必须针对CSRF attacks 实施防御。

【讨论】:

  • +1 因为也许你比我更了解 OP 的问题。
猜你喜欢
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多