2012-05-26 101 views
13

我有一個基本的ASP.NET MVC 3應用程序。我有一個看起來像下面這樣的基本動作:在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 }); 
} 

我試圖讓別人通過將在電話間隙舉行了jQuery Mobile的應用程序訪問此動作。我被告知我需要在我的頭文件中返回Access-Control-Allow-Origin: *。但是,我不知道如何在標題中返回。有人可以告訴我該怎麼做?

非常感謝。

回答

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

我得到了另外一個問題:當 執行瀏覽器的下一個請求。它不包括頭「Access-Control-Allow-Origin」回到服務器。 如何使瀏覽器從其之前的響應中返回所有標題。 –

+0

@TolaCh。 AFAIK沒有理由說瀏覽器應該在後續請求中返回所有響應頭。你可以使用JavaScript [getAllResponseHeaders(http://help.dottoro.com/ljnxxhwv.php)和[setRequestHeader(http://help.dottoro.com/ljhcrlbv.php)從一個響應傳播的頭請求。 – 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

當前鏈接:http://blog.gregbrant.com/post/Adding-Custom-HTTP-Headers-to-an-ASPNET-MVC-Response –

+0

鏈接不工作 –