2017-06-07 96 views
3

我已经使用WebApi获得了C#.NET MVC解决方案。 现在我已经设置了Owin和CORS(用于基于令牌的认证),并且所有工作都按预期工作。ASP.NET将CORS头文件添加到ashx文件处理程序

我也有一个文件处理程序:File.ashx配置和处理程序完美地在本地工作。 的问题是,当我发送到处理程序的请求从其他产地(通过AJAX客户端调用)我得到folliwing错误:

的XMLHttpRequest无法加载http://localhost:1234/Handlers/File.ashx。对预检请求的响应不会通过访问控制检查:请求的资源上不存在“访问控制 - 允许来源”标头。因此,'http://localhost:1234'不允许访问。该响应具有HTTP状态代码405.

现在,当浏览器发送OPTIONS请求时,显然访问控制标题不会返回给客户端。

我看了下面的链接: Header not being set for OPTIONS Ajax request这表明我通过处理程序本身返回适当的头文件。

但是在调试时我注意到ProcessRequest方法没有被击中。

if (context.Request.HttpMethod == "OPTIONS") 
    { 
     context.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
     context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST"); 
     context.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept"); 
    } 

我的问题是我在哪里控制/拦截OPTIONS请求并返回适当的头文件?

请注意,我只想在WebApi(已在工作)和我的文件处理程序上禁用CORS。

回答

2

对于任何人想知道如何解决这个问题:

添加事件处理程序的BeginRequest在Global.asax.cs中构造,并根据您的要求有操纵你的响应头。

相关问题