【问题标题】:Firefox and Chrome do not support cross-domain AJAX by default?Firefox 和 Chrome 默认不支持跨域 AJAX?
【发布时间】:2010-05-17 16:34:56
【问题描述】:

以下代码在 IE8 和 Safari4 中按预期工作,但在 Firefox3.6 和 Chrome 中无法正常工作。所有浏览器都在 Windows 上。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
        <script type="text/javascript">
            $(function() { $('#tabs').tabs(); });
        </script>
    </head>
    <body>
        <div id="tabs">
            <ul>
                <li><a href="http://www.google.com/">Google</a></li>
                <li><a href="http://www.msn.com/">MSN</a></li>
            </ul>
        </div>
    </body>
</html>

好像Firefox和Chrome默认不支持跨域AJAX吧?有什么简单的方法可以在 Firefox 和 Chrome 中开启跨域 AJAX?

【问题讨论】:

  • 重新标记和删除 ajax,因为这是 jQuery UI 的问题,而不是 ajax 本身的概念。另外,请查看jqueryui.com/demos/tabs/#Ajax_mode。由于您依赖 AJAX 加载内容,因此 UI 插件需要知道如何进行跨域 XHR(我对此表示怀疑)。

标签: jquery jquery-ui


【解决方案1】:

使用 JSONP(基本上,您插入一个 &lt;script src="otherdomain.tld/....?callback=your_function"/&gt;(jQuery 自动执行此操作)。

【讨论】:

    【解决方案2】:

    这可以帮助http://www.ajax-cross-domain.com/ 吗?

    【讨论】:

    • 我会看看这个。但似乎这不是一个简单的方法。
    【解决方案3】:

    XSS(跨站点脚本)是一个很大的坏处。除非您正在谈论对另一个进行安全修改以使其支持它,否则我无法相信他们默认会这样做。

    编辑

    我只是注意到你的代码并没有做任何 XSS。您从中得到了什么样的错误(如果有)?

    【讨论】:

    • 控制台中没有显示错误。但在 Firefox 和 Chrome 中,选项卡下方没有显示任何内容。
    • 您想要做的不应该是 any 浏览器中的默认设置,因为它实际上是 CSS,因此启用巨大的安全风险浏览器。
    猜你喜欢
    • 2012-01-16
    相关资源
    最近更新 更多