我正在尝试从角度向.Net Web api项目发送POST
和GET
请求,但GET请求工作正常,但对于POST
请求却不起作用给我以下错误,
选项http://localhost:2073/api/MyAttendance/GetEvent 405(方法 不允许)访问XMLHttpRequest 原产地的“ http://localhost:2073/api/MyAttendance/GetEvent” “ http://localhost:4200”已被CORS政策屏蔽:对 飞行前请求未通过访问控制检查:它没有 HTTP正常状态。
同胞是我的POST
请求,
在component.ts
getDate() {
let dateList: any = {};
dateList.startDate = this.startDate;
dateList.endDate = this.endDate;
this._lkassetsService.getEventDetails(JSON.stringify(dateList)).subscribe((eventData: any) => {
this.msg = eventData;
});
}
在service.ts
getEventDetails(dateList: any): Observable<any> {
return this._http.post('http://localhost:2073/api/MyAttendance/GetEvent', dateList, {
headers:new HttpHeaders({
'Content-Type': 'application/json'
})
});
}
以下是我从后端提交的.net Web API请求
[HttpPost]
[Route("api/MyAttendance/GetEvent")]
public string Event([FromBody]object Text)
{
return "Success";
}
此请求与邮递员配合良好,并且在我的web.cong
文件(.net网络api)中,我添加了以下代码,
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type"/>
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
如果我使用'Content-Type': 'application/x-www-form-urlencoded'
而不是'Content-Type': 'application/json'
也可以,但是输出为空,但我想使用json
格式
对于这个问题我一无所知,如果有人可以帮助我,我将非常感激。我看到了很多解决方案,但这没用
答案 0 :(得分:1)
请勿将操作名称GetEvent
用于get
以外的其他方法。如果您使用get in action名称,它将成为get方法
答案 1 :(得分:1)
我在项目中遇到了这个问题。我成功的方法是在API方面进行这些更改。 (我们的.net框架版本为4.6.1)
在web.config中
<appSettings>
<add key="Cors-Origins" value="http://localhost:4200" />
</appSettings>
在WebApiConfig.cs中:
string origins = ConfigurationManager.AppSettings["Cors-Origins"];
config.EnableCors(new EnableCorsAttribute(origins, "*", "*") {SupportsCredentials = true});