OpenLayers从其他站点加载GML文件。

| 我在将GML文件加载到OpenLayers时遇到困难。我已将问题简化为以下内容: -在以下位置复制/粘贴示例:http://openlayers.org/dev/examples/behavior-fixed-http-gml.html -将所有链接替换为绝对链接 这导致我从本地主机(file:///)运行以下文件/代码:
<html xmlns=\"http://www.w3.org/1999/xhtml\">
    <head>
    <meta name=\"viewport\" content=\"width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" />
    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />
        <title>OpenLayers Vector Behavior Example</title>
        <link rel=\"stylesheet\" href=\"http://openlayers.org/dev/theme/default/style.css\" type=\"text/css\" />
        <link rel=\"stylesheet\" href=\"http://openlayers.org/dev/examples/style.css\" type=\"text/css\" />
        <script src=\"http://openlayers.org/dev/OpenLayers.js\"></script>

        <script type=\"text/javascript\">
            var map;

            function init(){
                map = new OpenLayers.Map(\'map\');
                var wms = new OpenLayers.Layer.WMS(
                    \"OpenLayers WMS\", \"http://vmap0.tiles.osgeo.org/wms/vmap0\",
                    {layers: \'basic\'}
                );

                var layer = new OpenLayers.Layer.Vector(\"GML\", {
                    strategies: [new OpenLayers.Strategy.Fixed()],
                    protocol: new OpenLayers.Protocol.HTTP({
                        url: \"http://openlayers.org/dev/examples/gml/polygon.xml\",
                        format: new OpenLayers.Format.GML()
                    })
                });

                map.addLayers([wms, layer]);
                map.zoomToExtent(new OpenLayers.Bounds(
                    -3.92, 44.34, 4.87, 49.55
                ));
            }
        </script>
    </head>
    <body onload=\"init()\">
        <h1 id=\"title\">Vector Behavior Example (Fixed/HTTP/GML)</h1>
        <div id=\"tags\">
            vector, strategy, strategies, protocoll, advanced, gml, http, fixed
        </div>
        <p id=\"shortdesc\">

            Vector layer with a Fixed strategy, HTTP protocol, and GML format.
        </p>
        <div id=\"map\" class=\"smallmap\"></div>
        <div id=\"docs\">
            The vector layer shown uses the Fixed strategy, the HTTP protocol,
            and the GML format.
            The Fixed strategy is a simple strategy that fetches features once
            and never re-requests new data.
            The HTTP protocol makes requests using HTTP verbs.  It should be
            constructed with a url that corresponds to a collection of features
            (a resource on some server).
            The GML format is used to serialize features.
        </div>
    </body>
</html>
问题在于,GML无法显示(其他所有方法都很好用)。我在控制台中没有错误,但是请求的状态为200 OK(在FF控制台和FireBug“网络”选项卡中)。 我缺少什么?同一原始策略失败应该显示一些错误,不是吗?     
已邀请:
        它确实在Chrome中给出了Access-Control-Allow-Origin错误。   XMLHttpRequest无法加载   http://openlayers.org/dev/examples/gml/polygon.xml。   来源http://fiddle.jshell.net不是   被允许   访问控制允许来源。 对于FF,它确实给出了您所说的200响应代码,但是响应不包含任何数据。 http://jsfiddle.net/niklasvh/F76Hp/3/     
        为了保护用户免受脚本向远方服务器发送信息的影响,有一个“相同的源策略”,该策略指出您只能通过HTTP请求从与当前正在查看的页面相同的服务器接收数据。 这就解释了为什么Wireshark拥有信息,而Firebug却没有:浏览器不允许信息的传输。 JSON-P是解决此问题的技巧: http://en.wikipedia.org/wiki/JSONP 如果您无权访问JSONP源或不希望使用JSONP方法,则必须使用代理,该代理会将您的请求转发到遥远的服务器并返回信息,就好像它来自您自己的信息一样服务器。然后,浏览器将无法告知通信最终将到达远程服务器,并将允许HTTP请求。     

要回复问题请先登录注册