ArcGIS Server 10.x出现498 Invalid token错误解决方法

2026-06-10 开发技术 3 次阅读 0 次点赞
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=ARCGIS_TOKEN

返回:

{
    "error": {
        "code": 401,
        "message": "Unauthorized access",
        "details": []
    }
}

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错误解决方法

评论 (0)

登录 后发表评论

暂无评论,快来发表第一条评论吧!