2012-05-26 18 views
13

Tengo una aplicación básica ASP.NET MVC 3. Tengo una acción básica que se parece a lo siguiente:Agregar encabezados en ASP.NET MVC 3

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult AddItem(string id, string name, string description, string username) 
{ 
    // Do stuff 
    return Json(new { statusCode = 1 }); 
} 

Estoy tratando de dejar que alguien accede a esta acción a través de una aplicación de jQuery Mobile que se encuentra alojado en Gap teléfono. Me dijeron que tengo que devolver Access-Control-Allow-Origin: * en mi encabezado. Sin embargo, no estoy seguro de cómo devolver eso en el encabezado. ¿Puede alguien por favor mostrarme cómo hacer eso?

Muchas gracias.

Respuesta

25
Response.AppendHeader("Access-Control-Allow-Origin", "*"); 
+0

tengo otro problema: cuando el navegador realice siguiente solicitud. no incluye el encabezado "Access-Control-Allow-Origin" en el servidor. Cómo hacer que el navegador devuelva todos los encabezados de su respuesta anterior. –

+0

@TolaCh. AFAIK no hay ninguna razón para que un navegador devuelva todos los encabezados de respuesta en solicitudes posteriores. Puede usar JavaScript [getAllResponseHeaders] (http://help.dottoro.com/ljnxxhwv.php) y [setRequestHeader] (http://help.dottoro.com/ljhcrlbv.php) para propagar los encabezados de una respuesta a un solicitud. – HABO

29
public class HttpHeaderAttribute : ActionFilterAttribute 
    { 
     /// 
     /// Gets or sets the name of the HTTP Header. 
     /// 
     /// The name. 
     public string Name { get; set; } 

     /// 
     /// Gets or sets the value of the HTTP Header. 
     /// 
     /// The value. 
     public string Value { get; set; } 

     /// 
     /// Initializes a new instance of the class. 
     /// 
     /// The name. 
     /// The value. 
     public HttpHeaderAttribute(string name, string value) 
     { 
      Name = name; 
      Value = value; 
     } 

     public override void OnResultExecuted(ResultExecutedContext filterContext) 
     { 
      filterContext.HttpContext.Response.AppendHeader(Name, Value); 
      base.OnResultExecuted(filterContext); 
     } 
    }  

[HttpHeader("Access-Control-Allow-Origin","*")] 
    public ActionResult myaction(int id) 
    { 
     // ... 
    } 
+0

Enlace actual: http://blog.gregbrant.com/post/Adding-Custom-HTTP-Headers-to-an-ASPNET-MVC-Response –

+0

Los enlaces no funcionan –