代码之家  ›  专栏  ›  技术社区  ›  Rdbhost

document.domain和跨站点脚本

  •  1
  • Rdbhost  · 技术社区  · 16 年前

    请求调试协助。

    页面 http://www.freshfaves.com/newfave.html 包含以下代码:

    <script>
    document.domain = 'freshfaves.com';
    $(document).ready(function() {
        var dbUrl = 'http://freshfaves.com/';
        var result = '';
        $.ajax({
                type: "POST",
                url: dbUrl,
                data: [], //params,
                async: false,
                dataType: "text",
                success: function(d,status) { result = d; return false; },
                error: function(xmlhttp,errmsg) { result = errmsg; return false; }
        });
        alert('result: '+result);
    });
    </script>
    

    据我所知,XMLHttpRequest跨站点限制是基于document.domain值进行检查的,该值设置为当前页面url的有效后缀,并且与承载请求页面的站点完全匹配。

    如果我将dbUrl更改为' http://www.freshfaves.com/ ,请求成功,因此问题似乎与url密切相关,而不是代码中其他地方的错误。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Kamiel Wanrooij    16 年前

    这应该是不可能的,因为它基本上是一个不同的域名,可能指向一个完全不同的服务器。

    编辑:刚刚注意到

    document.domain = 'freshfaves.com';

    内嵌框架 http://ajaxian.com/archives/how-to-make-xmlhttprequest-calls-to-another-server-in-your-domain

    W3C有一份草案规定了如何处理 交叉起源 已(部分)在Firefox 3中实现的请求,以及可能的其他浏览器: http://www.w3.org/TR/access-control/

    万维网 在域名前面,还有一些也省略了 万维网 部分这可以通过动态生成您的域名来解决 万维网 无论它是否存在于URL中,或者更好,都要使URL成为相对的:

    var dbUrl = '/mylocation';

        2
  •  0
  •   Pekka    16 年前

    here 对于IE, here 附属的

    你能试试地图吗 freshfaves.com 就说, test.freshwaves.com 看看你的方法是否有效?