Google Cloud 负载平衡和虚拟机的 CORS 问题

问题描述 投票:0回答:1

我目前在 Google Cloud 中设置了一个 Windows 虚拟机,并且它正在使用 SignalR 运行一项服务。该服务设置为使用 CORS,并且我在其中设置了选项以允许“http://localhost:3000”作为源。

最初,虚拟机有一个公共 IP,我可以毫无问题地直接连接到它。最终目标是让负载均衡器设置到指定地址的路由。创建的负载均衡器的 IP 地址为 x.x.x.x。创建了一条 DNS 记录,使 url (api.example.com) 指向该 IP。 SSL 已正确设置并配置了证书。

负载均衡器设置了一条路由,其中 https://api.example.com/abc 被路由到在 http 上侦听的 SignalR 服务。

我有一个使用 javascript SignalR 库进行连接的网页。当我尝试连接时出现以下错误:

从源“http://localhost:3000”获取“https://api.example.com/abc/negotiate?negotiateVersion=1”的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

如果我在网站上设置跳过谈判的选项,效果很好。我宁愿不这样做,并尽可能保留 CORS 政策。

这是需要在服务本身上设置的东西还是负载均衡器上设置不正确的东西?

我尝试为 Access-Control-Allow-Origin 设置自定义响应标头,将其设置为“*”或“localhost:3000”,但似乎没有任何效果。

先谢谢啦~!

google-cloud-platform cors signalr load-balancing
1个回答
0
投票

根据 amitvig22,应用程序内的 CORS 没有机会运行,并且根据文档,SignalR 不支持应用程序服务内的 CORS。

© www.soinside.com 2019 - 2024. All rights reserved.