在ASP.NET 4.5中解决跨域资源共享问题的方法是使用CORS(跨域资源共享)中间件。以下是一个示例代码,演示如何在ASP.NET 4.5中实现CORS。
首先,在Global.asax.cs文件中,添加以下代码:
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
namespace YourNamespace
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// 注册CORS中间件
GlobalConfiguration.Configuration.MessageHandlers.Add(new CorsHandler());
}
}
}
然后,创建一个名为CorsHandler的类,并继承自DelegatingHandler类。在CorsHandler类中,重写SendAsync方法以实现CORS。
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
namespace YourNamespace
{
public class CorsHandler : DelegatingHandler
{
protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = base.SendAsync(request, cancellationToken);
return response.ContinueWith(task =>
{
var httpResponse = task.Result;
// 添加CORS响应头
httpResponse.Headers.Add("Access-Control-Allow-Origin", "*");
httpResponse.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
return httpResponse;
});
}
}
}
上述代码中,我们在CorsHandler类中重写了SendAsync方法,该方法会在每个请求之前和之后被调用。在该方法中,我们可以修改请求和响应的头部信息。在这个例子中,我们添加了两个CORS响应头,“Access-Control-Allow-Origin”和“Access-Control-Allow-Headers”,以允许跨域请求。
最后,构建并运行你的ASP.NET 4.5应用程序,它将允许跨域请求,并在响应中包含CORS头部信息。
上一篇:ASP.NET 4.0中的SameSite cookies
下一篇:ASP.NET 4.5 Rest API 在 Unity Android/iOS 构建中可以工作,但在 Unity WebGL 构建中失败,显示“未知错误”。