我正在使用asp.net后端构建Angular 5应用程序。我想发送POST请求,我通过Postman测试它并且它工作得非常好,但是,当我尝试在Angular内部进行时我得到405错误。 我使用带有标题的HttpClient:新的HttpHeaders({' Content-Type':' application / json'}),与Postman相同。
我尝试更改web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Origin, Authorization, X-Requested-With, Content-Type, Accept"/>
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
</customHeaders>
</httpProtocol>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
但它似乎不起作用。
Angular POST代码(带标题:新的HttpHeaders({&#39; Content-Type&#39;:&#39; application / json&#39;})
setDopuskItem(itemToSave: DopuskItem){
let endpoint = this._dopuskApiUrl + 'set';
let body = JSON.stringify(itemToSave);
return this.http.put(
endpoint,
body,
httpOptions)
.catch(this.handleError);
}
答案 0 :(得分:1)
这是因为浏览器在发送主要请求之前发送了预检请求。
您可以在webapi应用中添加以下代码:global.asax.cs
GLIBCXX_3.4.21