我正在尝试通过Angular 8访问旧的ASP.NET-Api(API 1)。由于存在CORS-问题,因此访问是通过proxy.conf.js
-文件处理的。 (在另一篇文章中找到)
var Agent = require("agentkeepalive");
var keepaliveAgent = new Agent({
maxSockets: 100,
keepAlive: true,
maxFreeSockets: 10,
keepAliveMsecs: 1000,
timeout: 60000,
keepAliveTimeout: 30000 // free socket keepalive for 30 seconds
});
var onProxyRes = function (proxyRes, req, res) {
var key = 'www-authenticate';
proxyRes.headers[key] = proxyRes.headers[key] && proxyRes.headers[key].split(',');
};
const PROXY_CONFIG = [
{
target: Application-Url,
context: "/api/",
secure: false,
changeOrigin: true,
auth: "LOGIN:PASS",
loglevel: "debug",
onProxyRes: onProxyRes,
agent: keepaliveAgent
}
];
module.exports = PROXY_CONFIG;
在.NET应用程序中,唯一提示身份验证的是web.config
-文件中的以下行。
<authentication mode="Windows" />
编译并执行以下行为: 显示一个登录掩码,要求进行Windows身份验证。如果输入了凭据,则掩码会关闭并立即重新打开。这种行为无休止地持续。
注意:通过浏览器的命令行访问api端点非常正常。
答案 0 :(得分:1)
您可以使用以下PowerShell命令禁用回溯检查:
New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck" -Value "1" -PropertyType dword
更改注册表项后,将重新启动计算机。
或者您可以尝试以下操作:
在您的web.config文件中设置以下代码:
<authentication mode="Windows" />
<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
并确保将NTML设置为第一个提供程序。
检查“高级设置”下的“扩展保护”是否设置为“接受”。