簡體   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