Asp.Net Web API 2启用CORS

时间:2015-07-21 21:33:24

标签: c# cors asp.net-web-api2

我按照以下步骤在我的控制器中启用CORS:

  1. 安装了nuget包:

    安装包Microsoft.AspNet.WebApi.Cors

  2. 在Global.asax中,添加以下行:

    GlobalConfiguration.Configure(WebApiConfig.Register);

  3. 在WebApiConfig Register方法中,请输入以下代码:

  4. 
    
    public static void Register(HttpConfiguration config) {
    		   config.EnableCors();
    			config.MapHttpAttributeRoutes();
    	}
    
    
    

    1. 在web.config中,以下处理程序必须是管道中的第一个处理程序:
    2. 
      
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      &#13;
      &#13;
      &#13;

      1. 在从ApiController派生的控制器中,添加EnableCorsAttribute:
      2. &#13;
        &#13;
        [EnableCors(origins: "*", headers: "*", methods: "*")] 
        public class MyController : ApiController
        &#13;
        &#13;
        &#13;

        我使用以下jquery

        调用Api
        $.ajax({
            type: 'GET',
            url: getURL,
            dataType: 'json'
        })
        .done(
            function (data, textStatus, jqXHR) {
                $("#" + elementId).text(jqXHR.responseText || data);
            }
        )
        .fail(
            function (jqXHR, textStatus, errorThrown) {
                $("#" + elementId).text(textStatus);
            }
        );
        

        当我执行这些步骤时,我得到了&#34; No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。&#34;异常。

        如果我只在web.config中启用它:

        &#13;
        &#13;
              <httpProtocol>  
              <customHeaders>  
                <add name="Access-Control-Allow-Origin" value="*" />  
              </customHeaders>  
            </httpProtocol>  
        &#13;
        &#13;
        &#13;

        它工作正常,但它会影响我的所有应用程序操作。

        如何将此限制仅限于我的控制器?我在这里错过了什么让它起作用吗?

        提前致谢。

0 个答案:

没有答案