提问者:小点点

如何在负载平衡器后面设置Angular和OpenId


我正在尝试使用 OpenID 在我的 Angular/.net Core 2.0 应用程序中使用跨域身份验证。

为此,我正在使用anger-auth-oidc-Client包。身份验证API位于负载均衡器后面,我目前在浏览器中收到错误。

无法加载 https://xyz//.well-known/openid-configuration:请求的资源上不存在“访问控制允许源”标头。因此,不允许访问源“http://localhost:5002”。响应具有 HTTP 状态代码 404。

如何在Angular 4中添加等效的ForwardedHeadersOptions(. net core)?

Angular 还有其他软件包提供设置转发标头的选项吗?


共1个答案

匿名用户

我们在AWS S3存储桶上托管了一个Angular 4前端,后面有一个AWS弹性负载均衡器,我们有多个EC2服务器,每个服务器在nginx代理后面运行一个pm2服务。

来自前端的其余请求到达服务器时没有CORS问题:

  • 无需AWS弹性负载均衡器,直接连接到EC2服务器

REST请求与来自前端的CORS错误中断,并且未到达服务器:

  • 使用AWS弹性负载均衡器而不是直接连接到EC2服务器

虽然我们还没有成功,但这些是我们迄今为止尝试过的东西(根据@agentspacecake):

  1. S3存储桶中允许的CORS,示例config-done
  2. 使用CORS节点模块在后端允许CORS-已完成
  3. 在nginx代理中使用CORS头允许CORS-done
  4. 允许在负载平衡器的前端进行CORS-未完成

根据我目前的研究:

  • 根据@Max@AWS,我们需要将“Origin”标头列入白名单
  • 根据@Brian@AWS,我们希望将“Origin”和您希望转发的任何其他标头列入白名单
  • 这在过去是一个bug,尤其是对于chrome
  • 根据@Arun@AWS,请求需要包含预期返回的标头
  • 不确定浏览器缓存是否会暴露CORS问题
  • 根据@hescar,我们还可以尝试添加“Origin”标头
  • 看起来,我们不应该使用*通配符
  • AWS工作人员表示,ELB还不支持CORS
  • 对ELB CORS支持的功能请求仍处于打开状态
  • 文档指出,简单/实际请求中不允许JSON<code>Content-Type</code>

请求只使用GET或POST HTTP方法。如果使用POST方法,则Content-Type只能是下列之一:application/x-www-form-urlencoded、multipart/form-data或text/plain。

希望这在一定程度上有所帮助。