ugrás a tartalomhoz

Access-Control-Allow-Origin

zmagyar · 2010. Okt. 27. (Sze), 16.05
Nyilván szerveroldali a problémám, de ilyen témakör azon belül nem találtam. Hátha tudtok segíteni!
A problémám a következő:
Van egy nyílt forráskódú JavaScript cucc, ami webtérképről kattintással kér le információt az alatta elterülő objektumról.
A kérés így néz ki:
Request URL:http://bla-bla.bla.hu:8080/geoserver/wms?REQUEST=GetFeatureInfo&EXCEPTIONS=application%2Fvnd.ogc.se_xml&BBOX=2184704.032886%2C6100501.331676%2C2192572.269484%2C6103367.720236&X=610&Y=200&INFO_FORMAT=text%2Fhtml&QUERY_LAYERS=MV_RESZLET&FEATURE_COUNT=50&Layers=MV_RESZLET&Srs=EPSG%3A900913&WIDTH=1647&HEIGHT=600&format=image%2Fpng

A Chrome és a Fire fox nem adja vissza a kérést, mert az Origin: null
Érdekes, hogy az Explorer 8 és a Safari 4 megbírkózik a dologgal.
A kérést egy Apach Tomcat 7.0 alatt futó WebApp a GeoServer WMS-e dolgozza fel.
Hol tudom ezt beállítani, hogy az Origin: * legyen?

Nagyon köszönöm a segítséget előre is!
 
1

Példa

Poetro · 2010. Okt. 27. (Sze), 17.21
Jó lenne egy példa, vagy pontosabb hibaüzenet, mert így eléggé nehéz megmondani, hogy mi is a problémád. Egyébként a szerver dolgoknak is van témája. Az Origin az egy HTTP fejléc? Mi adja ki azt a fejlécet? XHR esetén meg lehet adni saját fejléceket is. Ha JavaScript oldalon maradunk, akkor:
xhr.setRequestHeader("Origin", "*");
Egyáltalán átadnak Origin fejlécet a böngészők? És miért kellene átadniuk?

Amennyiben HTTP Access Control-ról van szó, akkor érdemes a Mozilla dokumentációját megnézni.
2

Bővebben

zmagyar · 2010. Okt. 28. (Cs), 09.16
Nem vagyok profi a webes dolgokban csak egy mezei térinformatikus vagyok, aki próbál nyomozni. Szóval a Chrome az alábbi hibaüzenetet adja az infó kérésnél:
XMLHttpRequest cannot load http://bla-bla.bla.hu:8080/geoserver/wms?REQUEST=GetFeatureInfo&EXCEPTIONS=application%2Fvnd.ogc.se_xml&BBOX=2038250.686712%2C5762181.489905%2C2042184.805011%2C5763614.684185&X=619&Y=58&INFO_FORMAT=text%2Fhtml&QUERY_LAYERS=MV_RESZLET&FEATURE_COUNT=50&Layers=MV_RESZLET&Srs=EPSG%3A900913&WIDTH=1647&HEIGHT=600&format=image%2Fpng. Origin null is not allowed by Access-Control-Allow-Origin.

Szóval igen Http Access Control header-jéről van szó.
Elolvastam korábban az általad javasolt Mozilla doksit is, de számomra sajnos nem volt egyértelmű, hogy mit is kell beállítani ahhoz, hogy ne legyen Null az Origin. Csak felsorolja, hogy ilyen paraméterek léteznek, és hogy mire jók.

Maga a JavaScript részlet ami a fenti kérést generálja:


                // support GetFeatureInfo
                map.events.register('click', map, function (e) {
                    document.getElementById('info').innerHTML = "Betöltés... kérem, várjon...";
                    var params = {
                        REQUEST: "GetFeatureInfo",
                        EXCEPTIONS: "application/vnd.ogc.se_xml",
                        BBOX: map.getExtent().toBBOX(),
                        X: e.xy.x,
                        Y: e.xy.y,
                        INFO_FORMAT: 'text/html',
                        QUERY_LAYERS: reszlet.params.LAYERS,
                        FEATURE_COUNT: 50,
                        Layers: 'MV_RESZLET',
                        Srs: 'EPSG:900913',
                        WIDTH: map.size.w,
                        HEIGHT: map.size.h,
                        format: format};
                    OpenLayers.loadURL("http://bla-bla.bla.hu:8080/geoserver/wms", params, this, setHTML, setHTML);
                    OpenLayers.Event.stop(e);
                });
            };

            // sets the HTML provided into the info element
            function setHTML(response){
                document.getElementById('info').innerHTML = response.responseText;
            };
Remélem, hogy így már érthető, mi is a problémám!
Nagyon köszönöm a választ!