ArcGIS Server 10.x出现498 Invalid token错误解决方法
ArcGIS Server 10.0的鉴权问题表明,调用MapServer服务时必须在URL参数中传递token,同时在Cookie中传递agstoken,且两者值必须一致。单独使用URL参数或Cookie均会导致498、401或499错误。正确方式为同时携带两者,服务才能正常返回图层信息。
错误现象
最近在对接 ArcGIS Server 10.0 发布的 MapServer 服务时,遇到了一个鉴权问题。
服务地址如下:
http://localhost:8399/arcgis/rest/services/MyService/MapServer/0?token=ARCGIS_TOKEN
已经通过参数传递了token,但是仍然报错:
{
"error": {
"code": 498,
"message": "Invalid token",
"details": []
}
}
深入研究
本人仔细对比了报错的ArcGIS Server请求和正常的请求,发现正常的请求除了通过参数传递了token外,还通过Cookie传递了agstoken。具体如下:
完全不传 token
请求方式:
http://localhost:8399/arcgis/rest/services/MyService/MapServer/0
返回:
{
"error": {
"code": 499,
"message": "Unauthorized access",
"details": []
}
}
仅在 URL 中传递 token
请求方式:
http://localhost:8399/arcgis/rest/services/MyService/MapServer/0?token=ARCGIS_TOKEN
返回:
{
"error": {
"code": 498,
"message": "Invalid token",
"details": []
}
}
仅在 Cookie 中传递 agstoken
Cookie 内容:
agstoken=ARCGIS_TOKEN
返回:
{
"error": {
"code": 401,
"message": "Unauthorized access",
"details": []
}
}
正确调用方式(URL + Cookie 同时传递)
URL:
http://localhost:8399/arcgis/rest/services/MyService/MapServer/0?token=ARCGIS_TOKEN
Cookie:
agstoken=ARCGIS_TOKEN
返回正常,服务成功返回图层元信息(示例已截取部分):
{
"id": 0,
"name": "高压管线",
"type": "Feature Layer",
"geometryType": "esriGeometryPolyline",
"drawingInfo": {
"renderer": {
"type": "simple",
"symbol": {
"type": "esriSLS",
"style": "esriSLSSolid",
"color": [0, 169, 230, 255],
"width": 2
}
}
},
"fields": [
{
"name": "OBJECTID",
"type": "esriFieldTypeOID",
"alias": "OBJECTID"
}
]
}
原因分析
ArcGIS Server 对 token 的校验方式主要有两种:
- URL 参数传递:
?token=xxx - Cookie 传递:
agstoken=xxx
当前环境要求同时校验,即服务端会同时检查 URL 参数中的 token 和 Cookie 中的 agstoken,两者缺一不可,且值必须一致。
解决方案
HTTP 请求必须同时携带 token 和 agstoken。
无论是通过代码还是测试工具(如 Postman、Apifox),都需要:
- URL 参数:
token=ARCGIS_TOKEN - Cookie:
agstoken=ARCGIS_TOKEN
两者值完全一致。
错误码说明
| 错误码 | 含义 | 触发条件 |
|---|---|---|
| 499 | Unauthorized access | 未携带任何凭证 |
| 498 | Invalid token | 仅 URL 传递 token,校验失败 |
| 401 | Unauthorized access | 仅 Cookie 传递 agstoken,校验失败 |
总结
ArcGIS Server 10.x 要求 URL 和 Cookie 同时携带相同 token 才能正常访问。具体规范如下:
- URL 参数:token=ARCGIS_TOKEN
- Cookie:agstoken=ARCGIS_TOKEN
两者缺一会返回 498 或 401 错误,完全不传则返回 499 错误。按照上述方法正确传递 token 即可正常调用服务。
最后更新于1小时前
本文由人工编写,AI优化,转载请注明原文地址: ArcGIS Server 10.x出现498 Invalid token错误解决方法
推荐阅读
VMware Workstation 17许可证密钥及免费激活方法详解
49522024-09-29
ArcGIS转GDB导入超图后空间查询失效?一个复制操作轻松修复
822026-06-03
VMware Workstation 16激活码及许可证密钥获取方法
31732024-09-29
CodeBuddyIDE与Trae终极对决:谁是最强国产AI编程IDE?最新版本深度横评
30852025-09-25
Claude Mythos Preview称霸AI编程榜:16项全冠,昂贵且危险的性能怪兽
3152026-04-21
OpenVPN安装配置完整指南:从零搭建安全VPN服务器与客户端
32942024-06-21