You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Esri JS调用Windows AD认证.NET API返回未授权,求正确传参语法

解决方案

核心问题说明

你之前的写法错误根源是:Windows AD身份认证(通常采用NTLM/Kerberos协议,部分场景搭配IIS基本认证)不支持通过自定义Username/Password请求头传递凭据,两个请求库都提供了专门的认证配置项,无需手动操作请求头。

正确代码示例

1. esri/Request 写法

var requestHandle = esriRequest({
  url: "https://myWindowsADwebsite.net/api/contact/get"
}, {
  // 认证参数直接作为顶层配置传入,不要放在headers中
  user: "myUser",
  password: "myPass",
  withCredentials: true,
  authMode: "auto"
});
requestHandle.then(this.requestSucceeded, this.requestFailed);

参数说明:

  • withCredentials: true:允许请求携带跨域认证凭据,同域场景也可正常生效
  • user/password:esriRequest原生提供的认证参数,会自动按照AD兼容的协议格式处理认证信息
  • authMode: "auto":让库自动识别适配服务端的认证模式

2. Dojo/Request 写法

require(["dojo/request"], function(request){
  request("https://myWindowsADwebsite.net/api/contact/get/", {
    method: "GET", // 可根据接口要求调整为POST等其他请求方法
    user: "myUser",
    password: "myPass",
    withCredentials: true
  }).then(this.requestSucceeded, this.requestFailed);
});

参数说明:Dojo/Request原生支持直接传入user和password配置项,会自动生成符合AD认证要求的头信息,无需手动自定义headers。

补充注意事项

  • 如果前端应用和API端点部署在同域下,浏览器会默认携带当前登录用户的AD凭据,不需要显式传入user和password,仅保留withCredentials: true配置即可,可避免前端明文存储账号密码的安全风险。
  • 如果是跨域调用场景,需要服务端配置CORS规则:响应头必须包含Access-Control-Allow-Credentials: true,且Access-Control-Allow-Origin不能设为通配符*,必须指定前端应用的具体域名。
  • 生产环境不建议在前端代码中硬编码明文账号密码,优先使用Windows集成认证(自动传递当前登录用户凭据)或OAuth2等更安全的身份认证方案。

内容的提问来源于stack exchange,提问作者objectively C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:45:02