c# asp .net core HTTP POST 请求适用于 Postman 但不适用于我的 angular 客户端(404 错误)
c# asp .net core HTTP POST Request works with Postman but not with my angular client(404 error)
我的 c# asp .net 核心 Rest 服务器有问题。我创建了一个带有测试路由的 AuthenticationController,它似乎与 Postman 一起工作,但是当我试图在我的 Angular 6 应用程序中获得相同的结果时,我收到一个 404 错误,指出找不到该路由,尽管它是完全相同 url.
我的 Asp .net 核心控制器:
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class AuthenticationController : ControllerBase
{
private readonly IAuthenticationService _service;
public AuthenticationController(IAuthenticationService service)
{
_service = service;
}
[AllowAnonymous]
[HttpPost("[action]")]
public IActionResult Test()
{
return Ok("It worked");
}
}
我的Angular调用路由的服务:
import {Injectable} from '@angular/core';
import {HttpClient, HttpErrorResponse,
HttpHeaders}from'@angular/common/http';
const SERVER_URL = 'http://localhost:4000/api/authentication/';
@Injectable({providedIn: 'root'})
export class LoginService {
public token: string;
constructor(private sessionUser: SessionUserService, private http:
HttpClient, private rolesService: RolesService) {}
test() {
return this.http.post(SERVER_URL + 'test', {})
.map((response: any) => {
console.log(response);
return response;
})
.catch(err => {
console.log(err);
return Observable.of(false);
});
}
}
这里是不同的结果:
从我的 Angular 客户端调用路由:
从 Postman 调用路由:
asp.net 核心服务器控制台的输出:
正如您在服务器的控制台日志中看到的那样,有一个 404 和一个 200 请求已完成。 404的是我的应用,200的是Postman的。
注:
CORS 应该不是问题,因为我有 google chrome 扩展。
我也尝试通过 angular 支持的代理配置来避免这个错误。
如您所见,您收到了 OPTIONS 请求的 404。我们在发送跨域请求时发送选项请求。
请确保 asp.net 应用中的 CORS 已配置。
因为当你使用 POSTMAN 时,它不是跨域请求。
您应该添加回复 header Access-Control-Allow-Origin: *
我的 c# asp .net 核心 Rest 服务器有问题。我创建了一个带有测试路由的 AuthenticationController,它似乎与 Postman 一起工作,但是当我试图在我的 Angular 6 应用程序中获得相同的结果时,我收到一个 404 错误,指出找不到该路由,尽管它是完全相同 url.
我的 Asp .net 核心控制器:
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class AuthenticationController : ControllerBase
{
private readonly IAuthenticationService _service;
public AuthenticationController(IAuthenticationService service)
{
_service = service;
}
[AllowAnonymous]
[HttpPost("[action]")]
public IActionResult Test()
{
return Ok("It worked");
}
}
我的Angular调用路由的服务:
import {Injectable} from '@angular/core';
import {HttpClient, HttpErrorResponse,
HttpHeaders}from'@angular/common/http';
const SERVER_URL = 'http://localhost:4000/api/authentication/';
@Injectable({providedIn: 'root'})
export class LoginService {
public token: string;
constructor(private sessionUser: SessionUserService, private http:
HttpClient, private rolesService: RolesService) {}
test() {
return this.http.post(SERVER_URL + 'test', {})
.map((response: any) => {
console.log(response);
return response;
})
.catch(err => {
console.log(err);
return Observable.of(false);
});
}
}
这里是不同的结果:
从我的 Angular 客户端调用路由:
从 Postman 调用路由:
asp.net 核心服务器控制台的输出:
正如您在服务器的控制台日志中看到的那样,有一个 404 和一个 200 请求已完成。 404的是我的应用,200的是Postman的。
注:
CORS 应该不是问题,因为我有 google chrome 扩展。
我也尝试通过 angular 支持的代理配置来避免这个错误。
如您所见,您收到了 OPTIONS 请求的 404。我们在发送跨域请求时发送选项请求。
请确保 asp.net 应用中的 CORS 已配置。 因为当你使用 POSTMAN 时,它不是跨域请求。
您应该添加回复 header Access-Control-Allow-Origin: *