【发布时间】:2015-02-04 10:40:49
【问题描述】:
我正在使用启用了 CORS 的 WEB API,并且我的 GET 和 POST 运行良好。但是我的 PUT 不能通过 CORS 工作。我可以在 Chrome 中使用“高级 REST”扩展,而且效果很好。我在 web config 中有各种设置
更新:我想指出我的 POST 通过 CORS 工作。其中,如果我理解该过程首先发送一个 OPTION 动词。那个 OPTION 动词会通过,但是 PUT 不会。
更新 2:因此 PUT(OPTIONS)动词似乎需要预检。而且我想我没有那个,我真的找不到如何制作它。
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="WebDAV" />
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
和
$.ajax({
type: "PUT",
dataType: "json",
url: url,
contentType: "application/json",
data: newMod,
success: function (data) {
OutfitModelKey = data;
console.log(data);
console.log(OutfitModelKey);
if (callback) {
callback();
}
},
error: function (error) {
alert("hi, error");
//jsonValue = jQuery.parseJSON(error.responseText);
//console.log(jsonValue);
//ToastDanger("uh o!", jsonValue);
//jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 });
}
});
和
' PUT api/OutfitModel/5
Public Function PutOutfitModel(ByVal id As Integer, <FromBody()> ByVal value As PhotoModelManagerCL.objOutfitModel) As Boolean
value.OutfitModelKey = id
Dim success As Boolean = PhotoModelManagerCL.UpdateobjOutfitModelByKey(value)
Return success
End Function
【问题讨论】:
-
你能展示一下你的控制器的Put方法吗?
-
你的 jquery 代码使用的 api url 是什么?
-
@Omar.Alani URL 位于 chrome 控制台中。 10.0.0.54:8001/api/outfitmodel/77 - 问题中的控件已更新。
标签: javascript jquery vb.net asp.net-web-api cors