2016-03-13 47 views
0

發送cookie我有一個App Engine服務器託管的AngularJS應用程序,使得CORS請求一些Cloud Endpoints API的另一個App Engine服務器上。由於每$http service documentation我已經啓用它通過settinga默認標題發送跨域請求憑據:角度不對CORS

$httpProvider.defaults.withCredentials = true; 

前端服務器與SSL支持相關的自定義域,並使得通過HTTPS請求(使兩端基本上都是HTTPS)。 我的目標是向後端發送身份驗證cookie以管理資源訪問授權,但由於某種原因,此cookie永遠不會被髮送。 當兩臺服務器在本地運行時(前端:http://localhost:8081,後端:http://localhost:8080),我確實在請求中看到了cookie,但部署後卻沒有。

我在那裏錯過了什麼?

angular http Documetation i follwed

回答

0

嘗試增加這個頭你的HTTP調用{'Content-Type': 'application/x-www-form-urlencoded'}

0

如果我理解正確的話,你想通過CORS發送授權cookie到一個不同的(子)域?

要做到這一點,您需要在初始頁面加載時允許CORS請求,請使用'withCredentials',因爲您已經詳細瞭解以及針對目標跨域呼叫的cookie。如果它是跨域的,則必須以js代碼編寫cookie,如果它是兄弟子域名,請確保cookie域以點號.domain.com開頭,然後該cookie將在該域的所有子域中共享。

由於域關係不同(即,不是同級子域),Localhost可能會對此類測試造成嚴重破壞 - 您可以嘗試使用本地代理來設置將子域映射到回送地址的場景。

+0

請問您能解釋一下「用js代碼寫cookie」是什麼意思?我目前正在依靠Google Identity Toolkit來管理OAuth2身份驗證並取回身份驗證令牌。我不確定是否有權訪問生成cookie的邏輯。 –

+0

現在我想起來了,你不可能爲客戶端頁面中的不同域寫一個cookie。您最好的辦法是在初次發佈時將cookie應用於所有子域名。 – Nick