【问题标题】:Enable CORS on Specific URL in ASP.NET Web Forms在 ASP.NET Web 窗体中的特定 URL 上启用 CORS
【发布时间】:2018-04-02 01:35:25
【问题描述】:

我不是后端开发人员,所以如果我没有提供足够的信息,我会提前道歉。我只是想找一些资源来帮助我的后端开发人员了解我想要做什么。

我正在尝试向使用 ASP.NET Web 窗体构建的 Web 应用程序内部的 rss 提要发出 AJAX GET 请求。但是,由于跨域安全性,请求被阻止。我想为与我们的 RSS 提要 (/page/rss/{id}) 关联的路由启用 CORS。

我能够在我们的 webconfig 中启用 CORS:

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" values="*" />
        <add name="Access-Control-Allow-Methods" values="GET" />
        <add name="Access-Control-Allow-Headers" values="Content-Type" />
   </customHeaders>
</httpProtocol>

但是,这为整个项目启用了它,这不是我想要的。我们的路由在 XML 文件中定义,如下所示:

<namespace.routing>
  <routings>
    <route name="publishedPage" url="page/{PageName}" page="~/Default.aspx" />
  </routings>
  <defaults>
    <default url="http://blog.example.com" domain="example.com" page="page/homepage" />
  </defaults>
</namespace.routing>

那么,如何在 ASP.NET Web 窗体的特定路径上启用 CORS?如果有人可以向我指出一些可以帮助我们的资源的方向,那就太好了。如果您需要更多信息,我很乐意提供。谢谢!

【问题讨论】:

    标签: c# asp.net ajax cors


    【解决方案1】:

    我不确定您是如何返回 rss 端点的,但如果您有权访问 HttpContext 对象,则可以使用它直接提供 CORS 标头。

    HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
    HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Methods", "Get");
    HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Headers", "Content-Type");
    

    根据您的应用程序的年龄,您可能需要使用AddHeader 而不是AppendHeader

    【讨论】:

    • 它不起作用,因为 OPTIONS 请求没有调用 ASHX 和 ASPX 处理程序并在应用程序级别(web.config 或 global.asax)处理
    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 2017-05-03
    • 1970-01-01
    • 2015-06-29
    • 2019-02-11
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多