Web api中阻止了跨源请求

时间:2015-01-28 19:02:08

标签: jquery ajax asp.net-mvc asp.net-web-api

我有一个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)中添加了CORS
Install-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();
        }

2 个答案:

答案 0 :(得分:2)

尝试在<System.WebServer>代码

之后在您的API的web.config中添加此内容
<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
    </customHeaders>
</httpProtocol>

也许config.EnableCors();还不够。

答案 1 :(得分:0)

尝试:
[EnableCors(origins: "*", headers: "*", methods: "*")]
我认为 localhost 是不允许的。