正确理解相同主机/不同端口和安全性的 CORS

2023-12-13

我不做太多客户端网络编程,所以我试图理解这个概念与我的具体情况的关系。

我有一个 RESTful WCF 服务在 50000 多个端口上运行。此外,我还有一堆用 HTML5/CSS3/JavaScript 编写的 Web 表单(不是 ASP WebForms),它们可以对此 WCF 服务进行 AJAX 调用。 Web 表单托管在同一主机上,但使用端口 80。Web 表单进行的 AJAX 调用都是GET仅请求。

此外,我有一个位于完全不同的位置(不同的主机)的第三方云托管应用程序,它也需要调用 WCF 服务。此通讯正在执行POSTs & PUT到 WCF 服务。

显然,从第三方托管云应用程序发出的调用是跨源的。根据我的研究,不同的港口实际上是不同的起源。

我知道安全性和 CORS 是不同的概念,但这就是我想要实现的目标,我需要更好地理解所有这些是如何工作的:
现在,我允许所有跨源请求,并且一切正常,但我想限制它以提高安全性,然后最终使用相同的证书通过 Webforms 和 WCF 服务设置具有传输安全性的 HTTPS。第三方云服务托管应用程序仍然需要能够与 WCF 服务通信,因此我需要允许它以不同的方式进行身份验证,这样就可以通过传递密钥来完成,因为一切都是服务器端的仅有的。

这整个通信“三角”对我来说感觉很模糊,我希望 SO 是我发布这个问题的正确位置,因为它与代码不直接相关。

  1. 上述 WCF - Web 表单情况是否被视为跨源?
  2. A)如果上面不是跨源的,那么我只需要通过Access-Control-Allow-Origin: 'https://my-cloud-host'在我的 web.config 中?

    B)如果是的话,我明白只需要回显标头中允许的来源。我要设置什么(如果有的话)Access-Control-Allow-Origin在这种情况下,在 IIS 中?如果不允许,我该如何回显,只回显原始来源?
  3. 如果它们托管在不同的端口上,我使用相同证书进行相互 SSL 身份验证的想法是否可行?这是否会阻止云服务与 WCF 服务进行通信,或者是否有第二个端点允许这样做?
  4. 我失去理智了吗?我对这整件事感到很困惑。

  1. 是的。在除 IE 之外的所有主要浏览器中,不同的端口被视为另一个来源。
  2. A)是正确的。您只需允许端口 80 源发送请求。
  3. 对此我不确定。我倾向于认为 SSL 是端口感知的,并且您不能在不同端口上使用相同的证书。
  4. 你可以阅读这篇优秀的文章让你的头脑休息一下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正确理解相同主机/不同端口和安全性的 CORS 的相关文章

随机推荐