[英]how can i pass my webform value in webapi controller as a model class using jquery ajax
[英]How do I put a value from a different domain in my Model through a WebAPI Controller using CORS?
该应用程序接收来自另一个非ASP.NET Web应用程序的请求。 我已经实现了跨域资源共享,现在我需要从请求中获取价值。
我的模特
public class User
{
public int userID { get; set;}
public string username { get; set; }
public string password { get; set;}
public int group { get; set; }
public string permission { get; set;}
}
我的控制器
[EnableCors("*", "*", "*")]
public class LoginController : ApiController
{
public User[] PutUser()
{
//this is where I want to create a user through requests to further work with the application
}
}
我该怎么办?
我在MVC项目中实现了类似的功能,在该项目中,我从另一个域调用我们的应用程序。 为此,您需要在响应中添加带有Origin值(请求的来源)的Access-Control-Allow-Origin标头。 我想这种方法也适用于Web API。 您不想允许来自任何网站的请求! 此方法将允许您响应初始请求,这似乎是您要返回的用户数组时要执行的操作。
我发现最简单的方法是创建一个属性,您可以使用该属性来装饰您的方法:
public class AllowCrossSiteAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
switch (filterContext.RequestContext.HttpContext.Request.Headers["Origin"])
{
case "https://myotherwebsite1.com":
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", filterContext.RequestContext.HttpContext.Request.Headers["Origin"]);
break;
case "https://myotherwebsite2.com":
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", filterContext.RequestContext.HttpContext.Request.Headers["Origin"]);
break;
default:
filterContext.Result = new EmptyResult();
break;
}
base.OnActionExecuting(filterContext);
}
}
switch语句检查源,并确保它来自受信任的源。 您无需对这些代码进行硬编码,但出于对话的考虑,我有。 如果您找到匹配项,则将适当的标题添加到响应中。
然后,您可以使用以下属性装饰您的方法:
[AllowCrossSite]
public class LoginController : ApiController
{
public User[] PutUser()
{
//this is where I want to create a user through requests to further work with the application
}
}
要从其他应用程序实际发送数据,您可以使用jquery Ajax请求或仅使用表单发布,但请确保将方法设置为PUT或POST(取决于您要执行的操作,根据命名尚不清楚)依靠动词。
您可以在FormDataCollection中收集请求的数据,我相信:
public public User[] PutUser(FormDataCollection form)
{
//...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.