c# - 正确理解具有相同主机/不同端口和安全性的 CORS

标签 c# wcf ssl iis-7.5 cors

我不怎么进行客户端 Web 编程,所以我试图理解这个概念与我的具体情况的关系。

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

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

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

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

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

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

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

最佳答案

  1. 是的。在除 IE 之外的所有主流浏览器中,不同的端口被认为是另一个来源。
  2. A) 是正确的。您只需要允许您的端口 80 来源发送请求。
  3. 我不确定。我倾向于认为 SSL 是端口感知的,您不能在不同的端口上使用相同的证书。
  4. 您可以阅读 this excellent article让你的头脑得到一些休息。

关于c# - 正确理解具有相同主机/不同端口和安全性的 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29034489/

相关文章:

wcf - 这篇 MSDN 文章是否违反了 MVVM?

c# - Azure Application Insights 跟踪未显示

c# - 如何在 C# 中知道 PID 和 VID 来发现虚拟 COM 端口名称

c# - NHIbernate <any> 映射问题

wcf - 在VB6中与WCF Windows服务通信?

c# - 使用跨域 WCF 服务时 OPTIONS 方法被拒绝

java - 如何从 Java keystore 中的证书链中仅删除一个证书

ssl - Websphere 独立 EJB 客户端不断提示签名者交换提示

ssl - 从 PHP 5.5 升级到 7.1.4 后 PHPMailer 失败

c# - Windows Mobile App 的 WCF 服务正在运行但我无法连接