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请求。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...