不能在 Angular 7 中使用 Post 方法
Posted
技术标签:
【中文标题】不能在 Angular 7 中使用 Post 方法【英文标题】:can't consume Post method in angular 7 【发布时间】:2019-07-19 06:19:22 【问题描述】:我一直在做一个 Angular 项目。我应该通过 Web 服务(ASP.NET Web api 核心)从服务器获取数据。所以 GET 方法可以完美运行,但我不能使用 Post 方法。我得到这个错误
我的发帖方法
[HttpPost]
public IActionResult PostMerchandiser([FromBody] Presentent presentent)
using (var db = new DMerchContext(ClientConnectionString))
presentent.idElement = Guid.NewGuid().ToString();
presentent.etat = 0;
db.Add(presentent);
db.SaveChanges();
return Ok();
我也将此添加到我的 web.config 中
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:4200" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept,
Authorization" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Methods"
value="POST,GET,PUT,DELETE,OPTIONS" />
<add name="Access-Control-Max-Age" value="1728000" />
</customHeaders>
Angular 代码(服务)
import HttpClient from '@angular/common/http';
import Injectable from '@angular/core';
import Observable from 'rxjs';
import Configuration from '../Services/Configuration';
import Merchandiser from 'src/Models/Merchandiser';
@Injectable()
export class MerchandiserService
private actionUrl: string;
constructor(public http: HttpClient, public configuration: Configuration)
this.actionUrl = configuration.serverWithApiUrl;
/////////////////////////////////////////// Login Services
/////////////////////////////////////////
public getMerchandisers<T>(): Observable<T>
return this.http.get<T>(this.actionUrl +
'Presentents/GetPresentents');
public PostMerchandiser<T>(merchandiser: Merchandiser): Observable<T>
return this.http.post<T>(this.actionUrl+'Presentents/PostMerchandiser',
merchandiser);
有什么建议吗?
【问题讨论】:
你的 Angular 代码在哪里? 您必须在服务器 docs.microsoft.com/en-us/aspnet/core/security/… 上启用/设置 CORS 中间件(如果认为 web.config 仅适用于 IIS) @ChristianBenseler 立即查看 @WilliamLohan 非常感谢你,终于成功了 【参考方案1】:您必须在服务器上启用/设置 CORS 中间件。我认为web.config
仅适用于 IIS。
您可以按照本指南 https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2 为 aspnetcore 完成此操作
注意:复制自comment,以便人们看到解决方案
【讨论】:
这是一个仅限链接的答案 -- 请提供有关如何回答问题的更多详细信息 @AK47 这是适用于 OP 的解决方案。除了重写 Microsoft 文档以在 SO 中设置 CORS 中间件之外,我不知道如何更详细地介绍 awnser 是“您必须在服务器上启用/设置 CORS 中间件”链接只是有关如何使用特定服务器框架工作的额外信息。这不仅仅是一个链接的答案。以上是关于不能在 Angular 7 中使用 Post 方法的主要内容,如果未能解决你的问题,请参考以下文章
Spring / Angular 7 POST方法请求参数为空
在 Angular 7 中,为啥即使只订阅一次 HttpClient.post 也会执行两次?
使用 Angular 7 使用 HTTP API 进行 POST 和命令错误标头丢失