代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

为什么jquery.load()不从外部网站加载文本文件?

  •  1
  • Edward Tanguay  · 技术社区  · 15 年前

    在下面的示例中,当我单击按钮时,它显示“加载已执行”,但是 未显示文本 .

    我有一个 客户端访问策略.xml 在根目录中,并且能够从 银光 . 所以我想我应该可以从 阿贾克斯 也。

    我需要更改什么以使文件的文本 http://www.tanguay.info/knowsite/data.txt 内容元素中是否正确显示?

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <script type="text/javascript"
            src="http://www.google.com/jsapi"></script>
            <script type="text/javascript">
                google.load("jquery", "1.3.2");
                google.setOnLoadCallback(function() {
                    $('#loadButton').click(loadDataFromExernalWebsite);
                });
                function loadDataFromExernalWebsite() {
                    $('#content').load('http://www.tanguay.info/knowsite/data.txt', function() {
                        alert('Load was performed.');
                    });
                }
            </script>
        </head>
    <body>
        <p>Click the button to load content:</p>
        <p id="content"></p>
        <input id="loadButton" type="button" value="load content"/>
    </body>
    </html>
    
    2 回复  |  直到 15 年前
        1
  •  4
  •   Mitch Dempsey    15 年前

    clientaccesspolicy对javascript没有影响。大部分(可能全部?)现代浏览器将阻止您运行跨站点脚本,因为这是一种安全风险。

    您的替代方法是通过自己站点上的文件代理该站点,如 /proxy.php?loadurl=http://theothersite.com 然后通过javascript调用该文件,这是允许的,因为它来自您的域。

        2
  •  1
  •   Matthew Flaschen    15 年前

    我认为任何浏览器都不会遵守 clientaccesspolicy.xml crossdomain.xml 对于xmlhttprequest。

    你还可以看看其他的机制,比如 Cross-Origin Resource Sharing . 这是 supported Firefox3.5及更高版本。

    推荐文章