2016-08-29 50 views
5

我正在嘗試使用來自客戶端JavaScript應用程序的Google身份驗證的azure功能(nodejs)。我已經爲正確的URL設置了CORS(即http://localhost:8080)。但我仍然得到以下錯誤:如何添加客戶http標頭作爲來自Azure功能的響應

Credentials flag is 'true', but the 'Access-Control-Allow-Credentials' header is ''. It must be 'true' to allow credentials. Origin ' http://localhost:8080 ' is therefore not allowed access.

我已經試過到處在互聯網上,花了幾天時間得到答案嘍。似乎Azure http響應需要在標題中添加此Access-Control-Allow-Credentials:true。有沒有辦法添加自定義標題?

任何幫助將不勝感激。

+0

您正在使用的NodeJS? – Thomas

+0

@Thomas,是服務器端的nodejs和客戶端的JavaScript提取。 –

回答

1

中的一個節點的功能如下您可以指定其他標題:

module.exports = function (context, req) { 
    context.res = { 
     status: 200, 
     body: "Hello " + req.query.name, 
     headers: { 
      'Content-Type': 'text/plain', 
      'MyCustomHeader': 'Testing' 
     } 
    }; 
    context.done(); 
} 
+0

它在這種情況下可能沒有幫助,我認爲這個錯誤是一個預檢http OPTIONS,這意味着你的函數不會被調用。 –

+0

是的,我在預檢時出現這個錯誤,所以我的功能沒有得到機會。它由天藍色的基礎設施處理。請幫助我,我真的卡住了。 –

+0

@SofaGum,你是如何配置CORS的?從天藍色的門戶? – Thomas

2

我終於設法解決這個問題。訣竅是從Azure函數應用程序中刪除所有CORS條目,並直接在您的代碼中處理它。

感謝有關azure應用服務的另一個stackoverflow issue共享的提示,該服務也適用於天藍色的功能。

各地有關工作的進一步詳情載於:

github issue #620

+0

我沒有看到預期的行爲。當我刪除App Settings中的所有CORS條目時,我可以在Azure函數代碼中成功設置「Access-Control-Allow-Credentials」標題爲「true」。但是,在這種情況下,「Access-Control-Allow-Origin」標題被清除。 如果我改用應用程序設置中的CORS設置,則可以正確設置Access-Control-Allow-Origin,但Access-Control-Allow-Credentials已被清除。 – Doug

相關問題