2016-11-04 54 views
0

從POST響應中獲取標題好的,在繼續之前,這是在CORS情況下發生的。

服務器#1(http://localhost:33233)是我的服務(SOAP,WebAPI)託管的主要網站。我已經添加在Global.asax這些線支持CORS請求:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin" , "*"); 
    if (HttpContext.Current.Request.HttpMethod == "OPTIONS") 
    { 
     // These headers are handling the "pre-flight" OPTIONS call sent by the browser. 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST"); 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Accepts, Content-Type, Origin");    
     HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000"); 
     HttpContext.Current.Response.End(); 
    } 
} 

另外,該服務器,當我收到一個請求,我設置在頭一個會話令牌上:

HttpContext.Current.Response.Headers.Set("X-SessionToken", "{...}"); 

服務器#2(http://localhost:41350/login)是我用AngularJS構建的移動網站,我稱之爲遠程服務。

在登錄過程中,我調用SingIn服務(SOAP)。我打斷點服務器端,我設置標題並返回響應;往返運行正常。

但是,當我從響應客戶端檢查標題時,我得到一個空值。

$http({ 
    method: 'POST', 
    url: 'http://localhost:33233/ws/Authentication.asmx/SignIn', 
    data: {...} 
}).success(function(data, status, header, config) { 
    var mySession = header('X-TokenSession'); 
}).error(function(data, status, header, config){ 
    ... 
}); 

我檢查了Fiddler或Chrome DevTools,我可以看到網絡流量中的標頭值。

這是$ httpProvider問題嗎?

回答

0

最後,我找到了答案。當我返回會話令牌時,我需要「公開」它:

HttpContext.Current.Response.AddHeader("Access-Control-Expose-Headers", "X-TokenSession");