3

我有大约 130 个白标签网站,它们都位于不同的域中,但每个网站上的表单都需要发布到一个共同的端点。我正在尝试通过使用跨域请求共享来实现这一目标。

考虑到安全性,我不想使用..

Access-Control-Allow-Origin: *

因此,我试图创建一个逗号分隔的域列表以允许,即..

Access-Control-Allow-Origin: http://www.myfirstdomain.com,http://www.myseconddomain.com....

为了在后端实现这一点,我设置了一个 ASP.Net Web API 解决方案,并试图通过使用System.Web.Http.Cors库并在“应用程序启动”上定义这些域来实现上述目标。

我的“应用程序启动”代码如下所示。

public static void Register(HttpConfiguration config)
    {
        var domains = "http://www.myfirstdomain.com,http://www.myseconddomain.co.uk .... about 130 domains more..";
        config.EnableCors(new EnableCorsAttribute(domains, "*", "*"));

我正在测试的域是该逗号分隔列表中的大约 110 个域,当我尝试 jQuery ajax 发布时,它首先按预期调用 OPTIONS 方法(以确定请求是否允许),但这会返回错误Origin Access-Control-Allow-Origin 不允许http://www.mytestdomain.com 。

但是,如果我将逗号分隔的字符串修改为只有我的域,甚至两个或三个域,OPTIONS 将返回 200 响应并因此允许 POST。

有谁知道这是预期的行为还是可以看到我哪里出错了?

4

1 回答 1

2

解决方案是我的数据库中有一个带有尾随空格的流氓域。因此,这在传递到 EnableCorsAttribute 时会导致问题,因此请注意您的数据!

于 2013-11-13T15:34:02.293 回答