我最近在我的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 }
);
}
}
答案 0 :(得分:1)
在IE 11中有一个“跨域访问数据源”的设置,请确保它是否已禁用: