2015-03-13 29 views
1

我并没有做太多的客户端网页编程,所以我试图把握这个概念与我的具体情况有何联系。正确理解具有相同主机/不同端口和安全性的CORS

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

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

很明显,第三方托管的云应用程序调用是跨源的。从我的研究看来,不同的港口实际上是不同的起源。

我知道,安全& CORS是不同的概念,但在这里就是我试图完成,我需要更好地了解这一切是如何工作的:
现在,我让所有的跨域请求,一切正在工作,但我想限制它以提高安全性,然后最终使用传输安全性设置HTTPS,同时使用相同证书的两个Web表单& WCF服务。第三方云服务托管应用程序仍然需要能够与WCF服务进行通信,因此我需要允许它进行不同的身份验证,以便在使用秘钥的情况下进行身份验证,因为一切都是服务器端只要。

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

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

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

回答

1
  1. 是的。在除IE以外的所有主流浏览器中,不同的端口被认为是另一个起源。 A)是正确的。您只需要允许您的port-80来源发送请求。
  2. 我不确定这一点。我倾向于认为SSL是端口识别的,并且不能在不同的端口上使用相同的证书。
  3. 您可以阅读this excellent article让您的头脑休息一下。
相关问题