我已经创建了一个asp.net核心项目,在项目中我有一个angularjs应用程序和一个web api项目。当我通过邮递员登录时,angularjs应用程序加载我得到了我期望在json中的响应。但是当我在angularjs中尝试相同的时候,我会在html中得到响应。
我尝试了很多设置但无法正常工作。
尝试设置$ http服务标头和$ httpProvider标头,但无法在角度js中使用它。
我将postman中的内容类型设置为application / json并且它可以工作,所以不要认为它因为内容类型在角度js中是错误的。
Startup.cs文件:
public void ConfigureServices(IServiceCollection services)
{
services
.AddMvcCore()
.AddJsonFormatters();
// Add framework services.
services.AddMvc().AddJsonOptions(
options =>
options.SerializerSettings.ContractResolver = new
CamelCasePropertyNamesContractResolver()
);
web api中的控制器是:
[Route("test3")]
[HttpPost]
public JsonResult Test3([FromBody]LoginUserRequest model)
{
LoginUserResponse response = new LoginUserResponse();
response.validLogin = false;
response.Message = "failed" + model.Email;
return Json(response);
}
Angular js服务:
vm.getLogin = getLogin;
function getLogin(request) {
return $http.post('/webapi/account/test3',request,{
headers: { 'Content-Type': 'application/json; charset=utf-8'}
})
.then(getLoginComplete)
.catch(getLoginFailed);
}
function getLoginComplete(data, status, headers, config) {
return data.data;
}
function getLoginFailed(e) {
var newMessage = 'XHR Failed for login';
if (e.data && e.data.description) {
newMessage = newMessage + '\n' + e.data.description;
}
e.data.description = newMessage;
return {"error":true, "message":"Unable to login please try again later"};
}
Chrome网络通过开发者工具:
请求网址:http://localhost:5000/webapi/account/test3 请求方法:POST 状态代码:200 OK 远程地址:[:: 1]:5000 推荐人政策:no-referrer-when-downgrade 响应标题 查看源 内容类型:text / html的;字符集= utf-8的 日期:2017年7月11日星期二19:58:46 GMT 服务器:红隼 传输编码:分块 请求标题 查看源 接受:application / json,text / plain, / Accept-Encoding:gzip,deflate,br 接受语言:EN-GB,EN-US; Q = 0.8,连接; Q = 0.6 连接:保持活跃 内容长度:61 内容类型:应用/ JSON;字符集= UTF-8 主持人:本地主机:5000 起源:http://localhost:5000 引用者:http://localhost:5000/login