2012-05-26 18 views
13

Ho un'app ASP.NET MVC 3 di base. Ho un azione di base che è simile al seguente:Aggiunta di intestazioni in 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 }); 
} 

che sto cercando di far accedere qualcuno questa azione tramite un'applicazione jQuery Mobile che sarà ospitata a Gap Phone. Mi è stato detto che ho bisogno di restituire Access-Control-Allow-Origin: * nella mia intestazione. Tuttavia, non sono sicuro di come restituirlo nell'intestazione. Qualcuno può per favore mostrarmi come farlo?

Grazie mille.

risposta

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

ho avuto un altro problema: quando Browser eseguire richiesta successiva. non include l'intestazione "Access-Control-Allow-Origin" sul server. Come rendere il browser restituisce tutte le intestazioni dalla sua risposta precedente. –

+0

@TolaCh. AFAIK non c'è motivo per cui un browser debba restituire tutte le intestazioni di risposta nelle richieste successive. È possibile utilizzare JavaScript [getAllResponseHeaders] (http://help.dottoro.com/ljnxxhwv.php) e [setRequestHeader] (http://help.dottoro.com/ljhcrlbv.php) per propagare le intestazioni da una risposta a una richiesta. – 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

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

+0

Link non funzionanti –