Javascript 在没有服务器同意的情况下是否可以跨域ajax请求?

Javascript 在没有服务器同意的情况下是否可以跨域ajax请求?,javascript,html,ajax,http,same-origin-policy,Javascript,Html,Ajax,Http,Same Origin Policy,我理解同源策略的概念及其原因,并且我理解CORS可以实现跨域请求。但是我想知道,当服务器没有在响应中返回“Access Control Allow Origin”头时,是否可以以任何方式与服务器进行跨域通信,无论这种方式多么不传统 我不想攻击任何东西。我只想合法地从远程域登录到web应用程序(我不拥有web应用程序),并触发一些选定的功能,从而检索一些数据 有没有人能告诉我这是否可能,我该怎么做。如果不可能直接进行ajax调用,那么甚至可以在我自己的站点中嵌入一个包含目标web应用程序的隐藏if

我理解同源策略的概念及其原因,并且我理解CORS可以实现跨域请求。但是我想知道,当服务器没有在响应中返回“Access Control Allow Origin”头时,是否可以以任何方式与服务器进行跨域通信,无论这种方式多么不传统

我不想攻击任何东西。我只想合法地从远程域登录到web应用程序(我不拥有web应用程序),并触发一些选定的功能,从而检索一些数据


有没有人能告诉我这是否可能,我该怎么做。如果不可能直接进行ajax调用,那么甚至可以在我自己的站点中嵌入一个包含目标web应用程序的隐藏iframe并以某种方式对其进行操作

您可以使用yahoo查询语言来获得:D

这里有一个扩展的jqueryajax函数用于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);

这将向yql发送请求,yql具有正确的accept标头,即使没有正确的标头,yql也会返回请求的url内容

您不能接触/操作第三方网站。如果您想从中获取数据,你需要使用服务器或类似yahoo pipes的服务进行screen scrape。当你说screen scrape时,你的意思是像我建议的那样使用包含web应用程序的隐藏iframe。所以,在不显示的情况下嵌入web应用程序,触发登录等,然后刮取我需要的任何东西?不,你不能用JavaScript触摸iframe。如果你需要他们登录,你真的很倒霉。而不是在你的服务器端编写代码来获取你想要的信息。这不会发生在客户端。对不起,我不明白这是怎么回事。这是一个Yahoo服务,在某种程度上充当我对目标web应用程序的请求的代理吗?如果是,那么它如何能够克服跨域问题?这是否意味着我必须通过Yahoo服务发送敏感的登录数据?这应该只是表明它有可能获得同源策略,但对于您的问题,我宁愿向您自己的webapplication方法发送ajax请求,该方法执行http请求,并提供基本的身份验证或任何您需要的功能,因此,基本上答案是否定的:同源策略仅适用于客户端脚本是的,这就是我所说的对一个示例php方法进行ajax调用,该方法发出http请求并将响应返回到ajax函数。尝试使用yql也会这样做,但您根本不需要自己的Web服务器