如何在web api MVC 6中启用跨域请求



我想使用jsonp绕过跨站点脚本从外部访问我的web api。

[HttpGet("{email}")]        
public User Get(string email)
{
    var user = (from usr in db.User
            join co in db.UserDetails on usr.id equals co.userId
            where co.email.Equals(email) || usr.email.Equals(email)
            select usr).FirstOrDefault();
    return user;
}
这是我的javascript代码
jQuery.ajax({
    type: "GET",
    url: "http://localhost:54381/api/userapi/test1@test.com",
    dataType: "jsonp",
    success: function (response) {
       var t = JSON.parse(response);
       alert(t.name);
    },
    error: function (jqXHR, textStatus, errorThrown) {
      alert("Error" + textStatus + "      " + errorThrown);
    }
});

当我得到以下错误

"parsererror" errorThrown Error:jQuery110206458149312522913_1441780598078未调用

怎么了?如何设置web api返回json格式的结果?或者必须启用跨域代码来处理它?有什么需要设置的吗?做谷歌我发现,JsonpMediaTypeFormatter可以用来获取数据。我如何在MVC 6 web api中设置这个

似乎有一些更多的问题与mvc 6 web api,我弄清楚之后,我会在这里添加,

您尝试过Produces属性吗?

似乎Produces属性允许您返回特定的格式,而不管当前配置的格式化程序。

produce适用于Method level(我还没有测试它们是否适用于Controller level)。

[HttpGet("{email}")]
[Produces("application/jsonp")]        
public Customer Get(string email)
{
...
}

相关内容

  • 没有找到相关文章