我理解同源策略的概念及其原因,我理解CORS可以实现跨域请求。但我想知道,当服务器没有在响应中返回“Access-Control-Allow-Origin”标头时,与服务器跨域通信是否有任何可能的方式,无论多么可能是非常规的。
我不想攻击任何东西。我只想合法地从远程域登录到Web应用程序(我没有Web应用程序)并触发一些选定的功能,这将导致检索一些数据。
有人能告诉我这是否可能,以及我如何去做。如果不能直接进行ajax调用,那么甚至可能在我自己的站点中嵌入一个包含目标Web应用程序的隐藏iframe并以某种方式操作它?
答案 0 :(得分:1)
你可以使用雅虎查询语言获得:D
这是一个扩展的jquery ajax函数for dooing so
jQuery.ajax = function (e) {
function o(e) {
return !r.test(e) && /:\/\//.test(e)
}
var t = location.protocol,
n = location.hostname,
r = RegExp(t + "//" + n),
i = "http" + (/^https/.test(t) ? "s" : "") + "://query.yahooapis.com/v1/public/yql?callback=?",
s = 'select * from html where url="{URL}" and xpath="*"';
return function (t) {
var n = t.url;
if (/get/i.test(t.type) && !/json/i.test(t.dataType) && o(n)) {
t.url = i;
t.dataType = "json";
t.data = {
q: s.replace("{URL}", n + (t.data ? (/\?/.test(n) ? "&" : "?") + jQuery.param(t.data) : "")),
format: "xml"
};
if (!t.success && t.complete) {
t.success = t.complete;
delete t.complete
}
t.success = function (e) {
return function (t) {
if (e) {
e.call(this, {
responseText: t.results[0]
}, "success")
}
}
}(t.success)
}
return e.apply(this, arguments)
}
}(jQuery.ajax);
这会将请求发送到具有正确accept-headers的yql,并且yql将返回所请求的url的内容,即使它没有正确的标题