CORS阻止图像WMS访问

CORS阻止图像WMS访问,cors,openlayers,wms,Cors,Openlayers,Wms,我在Angular应用程序中通过ImageWMS渲染奥地利光栅数据时遇到问题。我在服务器端(虚拟服务器)使用php,无法重定向链接以避免CORS问题 任何暗示都是非常感激的,事先非常感谢-苏珊娜 下面是示例代码: var bounds = [1700000, 6200000, 1800000, 6300000]; let tt = new ImageLayer({ gname: 'Kataster-BEV', source: new ImageWMS({ matr

我在Angular应用程序中通过ImageWMS渲染奥地利光栅数据时遇到问题。我在服务器端(虚拟服务器)使用php,无法重定向链接以避免CORS问题

任何暗示都是非常感激的,事先非常感谢-苏珊娜

下面是示例代码:

var bounds = [1700000, 6200000, 1800000, 6300000];
let tt = new ImageLayer({
    gname: 'Kataster-BEV',
    source: new ImageWMS({
        matrixSet: 'google3857',
        projection: this.projectionService.projGoogle,
        params: {
            'LAYERS': 'CP.CadastralZoning_Zoning,CP.CadastralParcel_Parcel',
            'FORMAT': 'image/png',
            'TRANSPARENT': 'FALSE',
        },
        serverType: 'geoserver',


        url: "redirect.php",
        crossOrigin: 'anonymous',
        extent: bounds,
        wrapX: true
    })
});
要重定向的url:“https://wsa.bev.gv.at/GeoServer/Interceptor/Wms/CP/INSPIRE_KUNDEN-ddf0f80a-ec58-4138-833d-a773ecd555b6?REQUEST=GetMap&STYLES=&width=1500&FORMAT=image/png&BGCOLOR=0xFFFFFF&TRANSPARENT=TRUE“


为了避免其他问题,我不会将url传递给php脚本,而是直接在脚本中设置url

OpenLayers将参数传递给WMS url,包括计算出的适合视口的适当宽度和高度,因此您的代理必须处理这些,而不是硬编码任何值

  new ImageLayer({
     source: new ImageWMS({
      url: 'redirect.php',
      params: {
        'LAYERS': 'CP.CadastralZoning_Zoning,CP.CadastralParcel_Parcel',
        'FORMAT': 'image/png',
        'TRANSPARENT': 'FALSE',
        'BGCOLOR': '0xFFFFFF',
      },
    }),
  })
这个简单的代理适用于我(使用http而不是https)


亲爱的迈克,非常感谢你的回复!但我很挣扎,无法将您的代码嵌入到我的环境中。如果我使用您的代码生成的网络地址(浏览器中的F12)并用正确的url()替换redirect.php,我将从服务器获得正确的png文件。但这不适用于应用程序。对我来说,redirect.php似乎不起作用。我不知道我做错了什么,也许是因为Web端是用Angular实现的?如果能得到进一步的帮助,我将不胜感激,苏珊
<?php 
 $method = $_SERVER['REQUEST_METHOD'];
 if($method == "GET"){
   $url = 'http://wsa.bev.gv.at/GeoServer/Interceptor/Wms/CP/INSPIRE_KUNDEN-ddf0f80a-ec58-4138-833d-a773ecd555b6?' . $_SERVER['QUERY_STRING'];
   $ch = curl_init($url);
   curl_setopt($ch, CURLOPT_HEADER, 0);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   $result = curl_exec($ch);
   $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
   curl_close($ch);
   if ($httpCode == 200) {
     echo $result;
   }
 }
?>
  new ImageLayer({
     source: new ImageWMS({
      url: 'https://wsa.bev.gv.at/GeoServer/Interceptor/Wms/CP/INSPIRE_KUNDEN-ddf0f80a-ec58-4138-833d-a773ecd555b6',
      params: {
        'LAYERS': 'CP.CadastralZoning_Zoning,CP.CadastralParcel_Parcel',
        'FORMAT': 'image/png',
        'TRANSPARENT': 'FALSE',
        'BGCOLOR': '0xFFFFFF',
      },
    }),
  })