当前位置: 首页 > 知识库问答 >
问题:

webApi 2中的子域CORS

莫宝
2023-03-14

我正在使用WebApi,就像我从 html" target="_blank">http://t.co/mt9wIL8gLA 那里学到的那样

如果我确切地知道客户请求的完美来源 URI,那么一切都会很好用。太糟糕了,我正在编写一个企业级 API,所以我的要求是,比如说 http://apps.contoso.com/myApp/api/foobar

可能来自我所在领域的所有应用,比如说:

http://apps.contoso.com/CRMApp

http://apps.contoso.com/XYZ

http://www.contoso.com/LegacyApp

http://test.contoso.com/newApps/WowApp...以及我的企业开发的所有新应用。

最好的方法是什么?使用< code>Origins="*"很俗气,将Origins添加到我的WS source和redeploy更俗气。

我目前的解决方案是编写一个自定义的CorsPolicyAttribute,如http://www . ASP . net/we b-API/overview/security/enabling-cross-origin-requests-in-we b-API # CORS-policy-providers中所示

并从web.config中的appsettings读取允许的起源。更好的方法是,在自定义属性中,检查请求Origin: header是否来自contoso.com,可能使用regexp,并将其添加到允许的起源中。

我想知道是否有更好、更标准的方法。

共有2个答案

谭泉
2023-03-14

我最终只编写了AuthorizationFilterAttribute,尽管我可能只编写了一个常规的FilterAttribute。

public class FilterReferals : AuthorizationFilterAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        var request = actionContext.Request;

        if (!AllowedReferers.GetAllowedReferersList().Contains(request.Headers.Referrer?.Host.ToLower()))
        {
            Challenge(actionContext);
            return;
        }

        base.OnAuthorization(actionContext);
    }

    void Challenge(HttpActionContext actionContext)
    {
        var host = actionContext.Request.RequestUri.DnsSafeHost;
        actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
        actionContext.Response.Headers.Add("WWW-Authenticate", string.Format("Basic realm=\"{0}\"", host));
    }
}
蒙弘图
2023-03-14

使用DynamicPolicyProviderFactory。这就是我所使用的……我甚至在前几天发布了一个关于它的问题,这类问题展示了如何将允许的域添加到网络中。配置文件

 类似资料:
  • 网页大意: domain.com:指向管理员和销售商的登录页面。 shop.domain.com:指向卖家的店铺。 计划使用react.Js作为前端,Nodejs(Express Js)作为后端。 还没有决定将所有内容都托管在Heroku上,或者只将Nodejs后端托管在Heroku上,而将React.js托管在其他地方,因为我们将开发过程分开。 如何根据URL访问(带或不带子域)将用户重定向到相

  • null 但如果有例外,我该怎么办? null

  • 问题内容: 我正在一个具有多个子域的站点上,其中一些应该具有自己的会话。 我想我已经解决了,但是注意到了一些我不理解的关于cookie处理的信息。我在文档中看不到有任何解释它的内容,因此我想我可以看看这里是否有人对此问题有所了解。 如果我只是这样做: 我最终得到了这样的会话cookie: subdomain.example.net 但是,如果我尝试自己设置Cookie域,无论是 或喜欢 我最终获得

  • 主要内容:示例子域是域名的扩展名,可以转发到URL或指向主机帐户或不同服务器中的IP地址和目录。 子域功能与主域名分开。 我们可以使用子域创建网站的区域。 示例 可以在网站上创建一个名为“移动端”的博客子域,例如:除了已经存在的 www.yiibai.com/m 之外,还可以通过URL - http://m.yiibai.com 访问该移动端网站。 理论上,我们可以为每个域名添加无限的子域名。 也可以添加多个子

  • 我的子域与另一个服务器和宿主提供商链接。 现在我想创建一个子域,并需要安全连接以及。 我看到两个解决方案: null 以防万一它能有所帮助--我最初的网站是在GoDaddy上托管的

  • 子域是一个域,它是主域的一部分并存在于同一服务器中。 我们也可以说它是第二个网站,它位于主域之下,但它可能与根网站有任何关系。 我们可以在这个子域下运行一个新网站。 For Example - blog.wenjiangs.com是根域wenjiangs.com的子域,blog.tutorialpoint.com也可以通过tutorialpoint.com/blog访问。 创建子域 Step 1