【发布时间】:2026-01-04 23:05:02
【问题描述】:
我在 * 中阅读了许多类似的问题,但这些解决方案对我不起作用。
我有 WCF REST 服务:
[<OperationContract>]
[<WebInvoke(UriTemplate = "PostItem",
RequestFormat= WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, Method = "POST")>]
我可以使用 Postman(Chrome 扩展程序)来使用它。我将数据作为“原始”而不是“urlencoded”传递。我得到 200 返回码。
我需要使用 angularjs 调用这个方法:
$http.post('http://192.168.1.65/Service1.svc/restapi/PostItem',
{
"Address": "г. Москва, ул. Соколово-Мещерская, д.25",
...
"User": ""
})
我刚刚从 Postman 复制了 URL 和 JSON。但我得到了错误:
angular.js:10722 选项 http://192.168.1.65/Service1.svc/restapi/PostItem http://192.168.1.65/Service1.svc/restapi/PostItem。回应 预检具有无效的 HTTP 状态代码 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>
这对我没有帮助。而且我不确定服务器端错误的原因。 Postman 扩展可以成功调用该方法。
如何使用 AngularJS 进行相同的 POST 调用?
更新:
这是 OPTIONS 请求:
评论和回复标签为空
更新 2:
在 IE 中一切正常,但在 Chrome 中不起作用。
【问题讨论】:
-
通常 .Net 会发送错误信息及其 405 状态码...你收到了吗?
-
我已更新我的问题并在 Chrome 中添加此请求的屏幕。
-
否,请查看您发布的更新图片,查看“预览”选项卡
-
预览和响应标签为空
-
尝试将我们的 WCF 函数中的所有参数设置为可选。让我知道这是做什么的
标签: javascript angularjs wcf rest