2016-04-14 13 views
0

benim HttpResponseMessage gibi: Benim açısal çağrı ve ben göremiyorum cevap olarak Ancak

 string jsonFiles = JsonConvert.SerializeObject(listFiles); 
     HttpResponseMessage response = new HttpResponseMessage 
     { 
      StatusCode = HttpStatusCode.OK, 
      Content = new StringContent(jsonFiles) 
     }; 
     response.Headers.Add("Key", "Value"); 

     return response; 

response.config.headers veya response.headers'daki "Key" başlığının. Bir fikrin neden? Benim Startup.cs yılında

$http.get("/api/Locker").then(function (response) { 
     console.log(response); 
     console.log(response.headers); 
     console.log(response.config.headers); 
    }); 

sahibim:

 app.UseCors(CorsOptions.AllowAll); 
     app.UseWebApi(config); 
+0

Eğer 4 ile başarı aşırı kullanmayı deneyin Can eklemek örneğin, özel bir özellik oluşturmayı deneyebilirsiniz parametreler (yanıt, durum, üstbilgiler, yapılandırma) ve üstbilgilere erişir? – Sarathy

+0

tanımsız. Bununla birlikte, yalnızca yanıtı kullanırsam, yanıt nesnesinin tüm bu özellikleri vardır. Response.config.headers Kabul Edilmiş bir üstbilgi ve bir Taşıyıcı üstbilgisi ancak eklediğim değil. – Pipeline

+0

Dokümantasyona göre, response.config isteği gönderirken kullanılan konfigürasyonu döndürür. response.headers bir işlevdir. Response.headers ("Key") kullanmayı deneyin ve yardımcı olup olmadığını görün. – Sarathy

cevap

1

. response.headers bir işlevdir. response.headers("Key") kullanmayı deneyin ve yardımcı olup olmadığını görün.

0

Açıkça senin CORS politikasına özel üstbilgi eklemek zorunda, ya angularjs okumak mümkün olmayacaktır. Bu değiştirme: Buna

app.UseCors(CorsOptions.AllowAll); 

: isteği gönderilirken kullanılan yapılandırma döndürür response.config belgeler gereğince

var policy = new CorsPolicy 
{ 
    AllowAnyHeader = true, 
    AllowAnyMethod = true, 
    AllowAnyOrigin = true, 
    SupportsCredentials = true 
}; 

policy.ExposedHeaders.Add("MyHeader"); 

app.UseCors(new CorsOptions 
{ 
    PolicyProvider= new CorsPolicyProvider 
    { 
     PolicyResolver = c => Task.FromResult(policy) 
    } 
}); 
+0

Üzgünüz çalışmadı – Pipeline

+0

O zaman HTTP yanıtınızı [Fiddler] (http://www.telerik.com/fiddler) kullanarak incelemeniz ve hem özel başlığınızın hem de 'Access-Control-Allow-Origin' başlığının olup olmadığını kontrol etmeniz gerekir. mevcut ve doğru. Ayrıca, her zaman 'app.UseCors' çağrınızın boru hattı içindeki herhangi bir OWIN ara katmanından ** önce yapıldığından emin olun. –

+0

Bunu yapıyordum. Sarath'ın yorumdaki cevabı benim için neyin işe yaradığıdır. CORS ile herhangi bir şey değiştirmek zorunda değildim. – Pipeline

0

WebApi sürüm 5.2.3 kullanıyorum. Bir yanıt başlığını dışa aktarmak için

Kumandanızda Sonra
public class CustomHeadersAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 
    { 
     actionExecutedContext.Response.Headers.Add("Access-Control-Expose-Headers", "<Your Custom Key>"); 
     base.OnActionExecuted(actionExecutedContext); 
    } 
} 

veya ihtiyacınız olan her yerde, sadece

[CustomHeaders] 
public HttpResponseMessage GetMethod() { ... } 
İlgili konular