当前位置: 首页 > 知识库问答 >
问题:

如何使用基本身份验证保护?

戚弘和
2023-03-14

我们有一个在Apache和nginx上运行的Angular 8应用程序。我们使用带有. htaccess. htpasswd的Basic Auth保护此应用程序。

不幸的是,由于对服务器的请求被基本身份验证阻止,应用程序无法加载,Angular无法加载这些文件:

此 路 不通http://root/polyfills-es2015.js因为这是一个跨来源请求,所以不要求提供凭据
已阻止http://root/runtime-es2015.js因为这是一个跨来源请求,所以不要求提供凭据<加载资源失败:服务器的响应状态为401(需要授权)(runtime-es2015.js,第0行)
被阻止http://root/styles-es2015.js因为这是一个跨来源请求,所以不要求提供凭据<加载资源失败:服务器响应状态为401(需要授权)(styles-es2015.js,第0行)
被阻止http://root/vendor-es2015.js因为这是一个跨来源请求,所以不要求提供凭据。此 路 不通http://root/main-es2015.js因为这是一个跨来源请求,所以不要求提供凭据
加载资源失败:服务器响应状态为401(需要授权)(vendor-es2015.js,第0行)
加载资源失败:服务器响应状态为401(需要授权)(main-es2015.js,第0行)
加载资源失败:服务器响应状态为401(需要授权)(polyfills-es2015.js,第0行)

如果我们删除对<代码>的引用。htpasswd应用程序按预期运行。

我尝试使用自定义HTTP侦听器:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  const cloned = req.clone({
    headers: req.headers.set('Authorization', 'Basic ' + btoa('user:password'))
  });

  return next.handle(cloned);
}

但这似乎不适用于棱角内部加载机制。

我们怎样才能让这个工作?

共有1个答案

胡新
2023-03-14

该问题不在Angular代码中,而是在后端配置中。

您需要在后端启用CORS(跨源请求)。现在,您的后端不允许请求通过,以防止任何网站发送请求(防止跨站点脚本攻击)。

因此,您应该查看nginxApache如何启用CORS。这个网站似乎给了一个简短的

 类似资料:
  • 我在我的Web api项目中使用Swagger: 等等。我们也使用SwaggerUI。工作起来像个符咒。对于生产,我们不希望swagger UI可用,我们希望使用基本身份验证来保护它。Afaik没有现成的此类功能。有没有一种方法可以通过网络api中的某种“黑客”来实现这一点?我可以只为特定的路由或类似的东西注册专用筛选器吗? 感谢你的帮助问候劳琳

  • 我在同一台主机上设置了多个eureka服务器实例。它们使用主机名eureka primary、secondary和treative,这些主机名在hosts文件中定义为localhost别名,并且一切正常-它们作为不同的实例彼此可见和可用。 当我尝试使用保护eureka实例时,问题就出现了。其想法是添加Spring Security依赖项,在eureka服务器上指定安全用户和密码,并将这些凭据放入U

  • 问题内容: 如何在AngularJs中使用基本身份验证?我已经在Google上搜索了,但是资源对我来说不起作用。我 非常 新AngularJS 问题答案: 假设您的html定义如下: 您可以使用以下基本身份验证将后端连接到rest api: 请注意,此代码的大部分是方法。如果不需要支持IE9及更低版本,则可以将其替换为本地JS实现- atob()和btoa():https : //develope

  • 问题内容: 使用基本身份验证进行身份验证时遇到问题。我正在使用符合协议的标准枚举来构造我的请求。问题是,当我在枚举中手动设置授权标头时,如下所示: 我总是收到401未经授权的回复。 但是, 如果我像这样使用回调设置密码: 它正确认证。我希望能够在符合的枚举中手动进行设置,而不是在中传递凭据。 我知道它正在使用身份验证挑战的后台,但我希望能够手动设置它。 这是我的实现: 问题答案: 最终弄清楚了问题

  • 问题内容: 从HttpClient 4.3开始,我一直在使用HttpClientBuilder。我正在连接到具有基本身份验证的REST服务。我将凭据设置如下: 但是,这不起作用(我正在使用的REST服务返回401)。怎么了? 问题答案: 从此处的 抢先身份验证 文档中: http://hc.apache.org/httpcomponents-client- ga/tutorial/html/aut