ERR_SSL_PROTOCOL_ERROR
Posted
技术标签:
【中文标题】ERR_SSL_PROTOCOL_ERROR【英文标题】: 【发布时间】:2021-09-15 21:55:12 【问题描述】:url 自动将 http 转换为 https。地图和地理服务器层不可见。
var wmsSource = new ol.source.ImageWMS(
url: 'http://117.252.14.233:8080/geoserver/Watersheds/wms',
params: 'LAYERS': 'Watersheds:as_riv_15s', 'TILED': true ,
serverType: 'geoserver',
//crossOrigin: 'anonymous'
transition: 0,
);
var wmsLayer = new ol.layer.Image(
source: wmsSource
);
var view = new ol.View(
center: [0, 0],
zoom: 1
);
var map = new ol.Map(
layers: [wmsLayer],
target: 'map',
view: view
);
map.on('singleclick', function (evt)
document.getElementById('info').innerhtml = '';
var viewResolution = /** @type number */ (view.getResolution());
var url = wmsSource.getGetFeatureInfoUrl(
evt.coordinate, viewResolution, 'EPSG:3857',
'INFO_FORMAT': 'text/html' );
if (url)
document.getElementById('info').innerHTML =
'<iframe seamless src="' + url + '"></iframe>';
);
enter image description here
【问题讨论】:
【参考方案1】:如果您的应用程序在 https 上运行,但您不控制 wms 服务器,您将被限制在不强制使用 https 的旧浏览器,例如 Internet Explorer,或者您必须在自己的服务器上使用代理。一个典型的例子是这里描述的 BGS Geology 服务https://www.bgs.ac.uk/technologies/web-map-services-wms/web-map-services-geology-625k/
为此,您需要一个简单的代理,例如
<?php
$method = $_SERVER['REQUEST_METHOD'];
if($method == "GET")
$url = 'http://ogc.bgs.ac.uk/cgi-bin/BGS_Bedrock_and_Superficial_Geology/wms?' . $_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;
?>
当代理脚本命名为 bgs625.php 时,OpenLayers 代码中的普通 wms url 可以替换为url: 'bgs625.php',
【讨论】:
以上是关于ERR_SSL_PROTOCOL_ERROR的主要内容,如果未能解决你的问题,请参考以下文章