Asp.net web api 2sxc CustomWebApi启用CORS
我创建从SxcApiController继承的自定义webapi, 但当我尝试从不同的域使用此api时,我收到一条消息:Asp.net web api 2sxc CustomWebApi启用CORS,asp.net-web-api,dotnetnuke,2sxc,Asp.net Web Api,Dotnetnuke,2sxc,我创建从SxcApiController继承的自定义webapi, 但当我尝试从不同的域使用此api时,我收到一条消息: No 'Access-Control-Allow-Origin' header is present on the requested resource. 我的控制器方法中有以下属性: [HttpPost] [DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)] 我这样称呼我的方法: $.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
我的控制器方法中有以下属性:
[HttpPost]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
我这样称呼我的方法:
$.ajax({
url: apiurl,
type: 'POST',
//headers: {
// 'Access-Control-Allow-Origin': '*'
//},
//crossDomain: true,
dataType: 'json',
data: data,
success: function (d) {
debugger;
alert("Saved Successfully");
},
error: function (d) {
debugger;
alert("Error please try again");
}
});
如果启用crossDomain并添加标头,则错误将更改为:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我认为SxcApiController是从DNNAPI控制器继承来的,也不知道如何在DNN上启用CORS
启用此方法的CORS还缺少什么
================编辑1================
我将此添加到承载api的web.config中:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
我还缺少什么
================编辑2:现在可以了================
我在方法中添加了此属性,现在可以了:
[HttpPost]
[AllowAnonymous]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
好极了,听起来你让它工作了+实际上这不是CORS的问题
正如一些附加信息一样:如果您真的想为其他域启用具有身份验证的CORS,您需要更深入,因为在这种情况下,浏览器将进行飞行前检查,以真正检查是否允许在请求中包含身份验证和cookie。这是IMHO DNN没有提供的,您必须使用asp.net magic启用它-基本上是通过为飞行前创建一个特殊的请求处理程序,或者在web.config中使用asp.net头重写 有没有关于如何在DnnI中实际实现这个(EnableCors)的例子?我想你必须用谷歌搜索一下,因为这是DNN问题,而不是2sxc问题。我们通常在web.config中启用它,但我想人们有不同的偏好/方法。
[HttpPost]
[AllowAnonymous]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]