Autor: Liu
Este artículo se ha actualizado sincrónicamente en el artículo de Jianshu https://www.jianshu.com/p/79f9394d4b45
En la aplicación real del proyecto, a veces es necesario agregar algunos encabezados de solicitud personalizados a la solicitud de envío. Ahora echemos un vistazo a cómo se usa el pellizco en el cliente iClient de SuperMap 2D.
1. Soporte de versión
IClient bidimensional para folletos / Openlayers / MapboxGL se ha agregado desde SuperMap iClient versión 10i.
2. Preparación antes del uso
Dado que SuperMap iServer permitió los parámetros de configuración del conjunto de nombres de encabezado de solicitud, antes del extremo frontal del encabezado de solicitud, la necesidad de extraer el directorio \ webapps \ iserver \ WEB-INF \ web.xml iServer en cors.allowed.headers aumenta de valor, por ejemplo, ahora necesitamos agregar los dos parámetros personalizados de token y apptoken, debemos agregarlos de acuerdo con la siguiente figura
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,token,apptoken</param-value>
</init-param>
Si no configura, verá el siguiente error al solicitar desde el front-end:
Sugerencias: Después de que el encabezado de solicitud personalizado del token esté en la versión SuperMap iServer10i, iServer analizará y verificará el token del usuario (cuando el servicio está autorizado, el token debe usarse para verificar si el servicio está autorizado para acceder. Así que personalice Don no use token como el nombre de su propio encabezado de solicitud
3. Uso específico de iClient para Leaflet / Openlayers / MapboxGL
3.1 Se pueden agregar encabezados a la interfaz de servicio que tiene la función de interactuar con iServer
Es decir, L.supermap. * Service (Leaflet), ol.supermap. * Service (Openlayers), mapboxgl.supermap. * Service (MapboxGL) interfaces todos los encabezados de soporte, Classic no tiene este parámetro, puede usar el siguiente global ajustes
#Leaflet
L.supermap
.featureService(url,{
headers: {
apptoken: '...'
}})
.getFeaturesByGeometry(geometryParam, function (serviceResult) {
});
}
#Openlayers
ol.supermap
.featureService(url, {
headers: {
apptoken: '...'
}})
.getFeaturesByGeometry(geometryParam, function (serviceResult) {
});
}
#MapboxGL
mapboxgl.supermap
.featureService(url, {
headers: {
apptoken: '...'
}})
.getFeaturesByGeometry(geometryParam, function (serviceResult) {
});
}
3.2 Configuración global
Antes de la función de interactuar con el servicio iServer, vuelva a escribir el siguiente método para traer una señal de cabecera de solicitud personalizada y realice la configuración global
# iClient for Leaflet/Openlayers/MapboxGL
SuperMap.FetchRequest.commitbak = SuperMap.FetchRequest.commit;
SuperMap.FetchRequest.commit = function (method, url, params, options) {
options.headers = options.headers || {
token: '42f_WTvu4du_QouTxU9C6qSRiQml38DVN2vXyjOT-wbhYwfKu1qKqA6_fvAW_I_cC1Zthpgeb7gxOxbpyeATsQ..'
}
return SuperMap.FetchRequest.commitbak(method, url, params, options)
}
#Classic
SuperMap.Util.commit= SuperMap.Util.committer;
SuperMap.Util.committer = function (options) {
options.headers = options.headers || {
token: '42f_WTvu4du_QouTxU9C6qSRiQml38DVN2vXyjOT-wbhYwfKu1qKqA6_fvAW_I_cC1Zthpgeb7gxOxbpyeATsQ..'
}
return SuperMap.Util.commit(options)
}
Consejo: en Classic, si el dominio no es el mismo que iSever, se solicitará el formato jsonp, pero la solicitud jsonp está esencialmente incrustada
Método: isInTheSameDomain se establece en verdadero
getFeatureBySQLService = new SuperMap.REST.GetFeaturesBySQLService(url2, {
eventListeners: {
"processCompleted": processCompleted, "processFailed": processFailed},
isInTheSameDomain:true
});
Este artículo presenta principalmente la interfaz funcional que interactúa con iserver para agregar encabezados de solicitud. El siguiente artículo presentará en detalle cómo agregar mosaicos de mapas