繁体   English   中英

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 core Rest Server 有问题。 我创建了一个带有测试路由的 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 客户端调用路由:

从我的 Angular 客户端调用路由

从 Postman 调用路由:

从 Postman 调用路由

asp .net 核心服务器控制台的输出:

asp .net 核心服务器控制台的输出

正如您在来自服务器的控制台日志中看到的那样,有一个 404 和一个 200 请求已完成。 带有 404 的是我的应用程序,带有 200 的是来自 Postman 的应用程序。

笔记:

CORS 应该不是问题,因为我有 google chrome 扩展。

我还尝试使用 angular 支持的代理配置来避免此错误。

如您所见,您收到了 OPTIONS 请求的 404。 当我们发送跨域请求时,我们发送选项请求。

请确保您在 asp.net 应用程序中的 CORS 已配置。 因为当您使用 POSTMAN 时,它不是跨域请求。

您应该添加响应头 Access-Control-Allow-Origin: *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM