提问人:pizza_tuesday 提问时间:11/7/2023 更新时间:11/15/2023 访问量:29
Google Cloud Load Balancing 和 VM 的 CORS 问题
CORS issue with Google Cloud Load Balancing and VMs
问:
我目前在 Google Cloud 中设置了一个 Windows VM,它正在使用 SignalR 运行服务。该服务设置为使用 CORS,我在那里设置了选项以允许“http://localhost:3000”作为源。
最初,VM 有一个公共 IP,我能够直接连接到它,没有问题。这样做的最终目标是让负载均衡器设置到指定地址的路由。已使用 ip 地址 x.x.x.x 创建了负载均衡器。创建了 DNS 记录,以便 url (api.example.com) 指向该 ip。配置了证书后,SSL 设置正确。
负载均衡器设置了一个路由,https://api.example.com/abc 路由到侦听 http 的 SignalR 服务。
我有一个使用 javascript SignalR 库进行连接的网页。当我尝试连接时,出现以下错误:
CORS 策略阻止了对从源“http://localhost:3000”的“https://api.example.com/abc/negotiate?negotiateVersion=1”提取的访问:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”,以便在禁用 CORS 的情况下获取资源。
如果我在网站上设置选项以跳过协商,它可以正常工作。如果可能的话,我宁愿不这样做,并保留 CORS 策略。
这是需要在服务本身上设置的内容,还是在负载均衡器上设置不正确?
我尝试为 Access-Control-Allow-Origin 设置一个自定义响应标头,设置为“*”或“localhost:3000”,但似乎没有任何效果。
提前致谢~!
答:
根据 amitvig22,应用内的 CORS 没有机会运行,并且根据文档,SignalR 不支持应用服务中的 CORS。
评论