我有一个Web Api项目(名称TestApi)。
当我调试此项目时,我在输入此网址时获取JSON数据" http://localhost:31310/api/Authors"
现在我想从另一个MVC项目(名称为:callTestApi)调用这个api方法,使用Jquery,我编写了这行代码。
$.ajax({
type: 'GET',
contentType: 'application/json; charset=utf-8',
url: 'http://localhost:31310/api/Authors/',
success: function (data) {
var getAll = data;
alert(data[0].Name)
},
error: function (data) {
alert('Error in getting result');
}
});
我在 TestApi 项目中启用了CORS。 看到这里
[EnableCors(origins: "http://localhost", headers: "*", methods: "*")]
public class AuthorsController : ApiController
{
private TestWebApiContext db = new TestWebApiContext();
// GET: api/Authors
public IQueryable<Author> GetAuthors()
{
return db.Authors;
}
}
我已使用此命令
在我的项目(TestApi)中添加了CORSInstall-Package Microsoft.AspNet.WebApi.Cors -Version 5.2.2
我已启用它Webapiconfig文件
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.EnableCors();
}
答案 0 :(得分:2)
尝试在<System.WebServer>
代码
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
也许config.EnableCors();
还不够。
答案 1 :(得分:0)
尝试:
[EnableCors(origins: "*", headers: "*", methods: "*")]
我认为 localhost 是不允许的。