在 ASP.NET Web 窗体中的特定 URL 上启用 CORS
Posted
技术标签:
【中文标题】在 ASP.NET Web 窗体中的特定 URL 上启用 CORS【英文标题】:Enable CORS on Specific URL in ASP.NET Web Forms 【发布时间】: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?如果有人可以向我指出一些可以帮助我们的资源的方向,那就太好了。如果您需要更多信息,我很乐意提供。谢谢!
【问题讨论】:
【参考方案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)处理以上是关于在 ASP.NET Web 窗体中的特定 URL 上启用 CORS的主要内容,如果未能解决你的问题,请参考以下文章
使用长时间运行的方法阻止 ASP.NET Web 窗体中的网页
如何针对跨站点脚本清理查询字符串输入 - 反映 ASP .Net(Web 窗体)应用程序中的问题?