我已經閱讀了StackOverflow中的許多類似問題,但該解決方案對我無效。針對預檢的響應具有無效的HTTP狀態代碼405
我有WCF REST服務:
[<OperationContract>]
[<WebInvoke(UriTemplate = "PostItem",
RequestFormat= WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, Method = "POST")>]
我可以用郵差(Chrome擴展)使用它。我將數據傳遞爲「原始」,而不是「urlencoded」。我得到200個返回碼。
我需要使用angularjs調用這個方法:
$http.post('http://192.168.1.65/Service1.svc/restapi/PostItem',
{
"Address": "г. Москва, ул. Соколово-Мещерская, д.25",
...
"User": ""
})
我剛纔複製的網址和JSON從郵差。但我得到的錯誤:
angular.js:10722 OPTIONS http://192.168.1.65/Service1.svc/restapi/PostItem http://192.168.1.65/Service1.svc/restapi/PostItem . Response for preflight has invalid HTTP status code 405
我已經尋找類似的問題,並發現兩個解決方案:
- 使用jQuery設置標題
Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
,但它並沒有與我的WCF服務 - 工作在我的web.config
設置自定義標題:
<httpProtocol> <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>
它不能幫助我。我不確定服務器端的錯誤原因。郵遞員擴展可以成功調用此方法。
如何使用AngularJS進行相同的POST調用?
更新:
這裏是OPTIONS請求:
審查和Response選項卡是空
更新2:
一切工作正常,在IE ,但不起作用Chrome瀏覽器。
通常.Net將發送錯誤信息及405狀態碼......你有沒有收到? –
我已更新我的問題,並在Chrome中添加此請求的屏幕。 – demas
否,在您發佈的更新圖片中查看,選中「預覽」標籤 –