Javascript 如何阻止本机Windows请求HTTP基本身份验证凭据

Javascript 如何阻止本机Windows请求HTTP基本身份验证凭据,javascript,react-native,basic-authentication,react-native-windows,Javascript,React Native,Basic Authentication,React Native Windows,我正在使用React Native for the Universal Windows平台访问REST服务器上的远程资源 当对需要通过HTTP Basic Auth进行授权的资源执行提取请求时,我可以为请求提供额外的“授权”头,只要凭据正确,一切都可以正常工作 如果凭据错误,我将收到一个(类似于连接到远程计算机时的凭据)。此提示不由我的应用程序管理,但在底层网络连接检测到401未经授权的服务器响应时,它似乎会自动弹出 以下是我在React Native中所做的工作: 让encodedCreden

我正在使用React Native for the Universal Windows平台访问REST服务器上的远程资源

当对需要通过HTTP Basic Auth进行授权的资源执行提取请求时,我可以为请求提供额外的“授权”头,只要凭据正确,一切都可以正常工作

如果凭据错误,我将收到一个(类似于连接到远程计算机时的凭据)。此提示不由我的应用程序管理,但在底层网络连接检测到401未经授权的服务器响应时,它似乎会自动弹出

以下是我在React Native中所做的工作:

让encodedCredentials=新缓冲区(this.state.username+”:“+this.state.password).toString(“base64”);
let response=wait fetch(this.state.serverUrl{
方法:“GET”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”,
“授权”:“基本”+encodedCredentials,
}
});
让responseJson=wait response.text();
警惕(回应);
服务器响应(如果提供了不正确的凭据)包括:

状态代码:401未经授权
WWW-Authenticate:Basic-realm=“iOSResource”
请注意,本机登录提示似乎会延迟整个获取请求。我可以输入错误的凭据并多次确认提示,而不会触发一次警报。只有当提示被明确取消时,才会输入正确的凭据,或者尝试了几次错误的凭据,取回等待才会继续

不幸的是,这带来了另一个问题:当在弹出提示中多次输入错误的凭据并最终“放弃”时,我可以提供我想要获取请求的任何凭据,它将而不是在将来的任何请求中向服务器提供我自己的授权头。发送的数据将保留在关闭前我在提示符中输入的任何内容上。在这种情况下,它不会再次出现提示,请求会立即失败。这使得我无法在自己的应用程序中更正凭据,因为它们根本不在请求中发送。我通过检查Wireshark中的传出数据确认了这一点

我猜Windows似乎透明地篡改了网络请求,以截获特殊响应代码,并在第一次将请求结果返回给实际调用方之前在必要时重新提示凭据

我想处理应用程序中不正确的凭据,而不是导致Windows拦截请求。有没有办法在基本身份验证失败的情况下抑制此本机提示并立即使用我自己的代码


编辑:使用Axios而不是普通获取时,行为完全相同。似乎两者最终都会执行XMLHttpRequest,并以相同的方式进行过滤。

我遇到了相同的问题。你找到解决办法了吗?不幸的是我没有。从那时起,我们停止使用React Native,因为这只是一个评估过程。太糟糕了。我大声说你可能已经找到了解决办法。我们可能会在react native windows github repo中对此提出一个问题。我将在创建问题时链接它。