1

OpenLayers(v2.12)を使用してWFSレイヤーをロードしようとしましたが、残念ながら、wfsサーバーへのHTTPOPTIONSリクエストの後でロードが中断します。FireBugは、サーバーが空の応答を送信することを示しています。エラーは検出されません。古いOpenLayersバージョン(v2.8)では、別のアプリケーションで使用しているのはOPTIONSリクエストではありません。この古いコードは、次のような純粋なHTTPGETを送信します。

http://myWfsServer/wfs?typename=someName&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&SRS=EPSG%3A4326&BBOX=...

これが現在のコードです

map = new OpenLayers.Map( 'map',{
    maxExtent:OpenLayers.Bounds.fromArray([7,47,10,49]),
    units: 'm'});

layer = new OpenLayers.Layer.OSM( "Simple OSM Map","http://myWfsServer/tiles/${z}/${x}/${y}.png");
map.addLayer(layer);
wfsLayer = new OpenLayers.Layer.Vector("WFS", {
    projection: "EPSG:4326",
    maxExtent: OpenLayers.Bounds.fromArray([7,47,10,49]),
        strategies : [new OpenLayers.Strategy.BBOX()],
        protocol : new OpenLayers.Protocol.WFS.v1_0_0({
        url : "http://myWfsServer/wfs",
        featureType : "ms:lsaId",
        featureNS : "http://mapserver.gis.umn.edu/mapserver",
    format: new OpenLayers.Format.WFST.v1_0_0({
        featureType: "ms:lsaId",
        featureNS: "http://mapserver.gis.umn.edu/mapserver"})
        })
});
map.addLayer(wfsLayer);
map.setCenter(new OpenLayers.LonLat(9,48).transform(
      new OpenLayers.Projection("EPSG:4326"),
      map.getProjectionObject()), 16);    


質問1:このリクエストをスキップして、以前のOpenLayersバージョンのように標準のGETリクエストを続行する方法はありますか?

質問2:OpenLayersはどのような応答を期待していますか?

4

1 に答える 1

1

問題が解決しました。OPTIONS リクエストは、OpenLayers からではなく、ブラウザからのものです。その理由は、WFS サーバーが Web アプリケーションを提供するサーバーではないためです。このリクエストは、クロスドメイン アクセスを許可することと関係があります。

質問 1 へ: アプリケーション ホストに WFS データを提供させます。たとえば、元の WFS へのプロキシとして Apache を構成します。

質問 2 へ: アイデアなし :-D

于 2012-09-20T20:50:53.073 に答える