CORS阻止图像WMS访问
我在Angular应用程序中通过ImageWMS渲染奥地利光栅数据时遇到问题。我在服务器端(虚拟服务器)使用php,无法重定向链接以避免CORS问题 任何暗示都是非常感激的,事先非常感谢-苏珊娜 下面是示例代码: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
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脚本,而是直接在脚本中设置urlOpenLayers将参数传递给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',
},
}),
})