Web API控制器不尊重CORS原点

时间:2014-10-07 19:49:39

标签: javascript c# asp.net-web-api cross-domain cors

我最近在我的Web API控制器中实现了cors。我从domain2上的客户端调用位于domain1上的web api。

对于原点,我指定了一个伪造的网址。据我了解,只接受来自此网址的来电。这是对的吗?

所以只能来自

 http://notgoingtowork.com

将能够调用控制器并返回数据

这是我的控制器(domain1)

public class TestController : ApiController
{
    [EnableCors(origins: "http://notgoingtowork.com", headers: "*", methods: "*")]
    public int Get()
    {
       return 1
    }
}

然后在我的其他域名上,ajax调用(domain2)

   $.ajax({
            url: "http://domain1/api/Test/Get", 
            method: "GET", 
            headers: { "accept": "application/json;odata=verbose" },
            success: function (data){alert("it worked");},
            error: function (error) { alert("Did not work"); }
        })

但是,请求仍然成功并返回数据。由于客户端不在“http://notgoingtowork.com”,如何成功执行此操作?我错过了什么?

我在IE11上这样做。这适用于chrome。

修改 这是WebApiConfig.cs文件 这很通用。我刚刚添加了Cors部分

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.EnableCors();
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

1 个答案:

答案 0 :(得分:1)

在IE 11中有一个“跨域访问数据源”的设置,请确保它是否已禁用: enter image description here