我正在使用服務器端的node.js和express.js以及客戶端的angular.js。我使用passport.js在服務器端設置了身份驗證。所以,當我登錄會話cookie設置,我可以通過瀏覽器訪問API沒有問題。但是當我嘗試用http請求angular.js中的api url時,我得到了「cors blocked」(是的,我做了這個)。服務器允許憑證,客戶端發送withCredentials:true。問題是什麼?Angular.js http GET請求,發送cookies的CORS問題
有趣的是服務器和客戶端甚至不在不同的域。他們都在本地主機。但是由於服務器「cors」在一開始就阻止了我,我已經啓用了cors。
所以我有服務器和客戶端在同一個域。 Corse已在服務器中啓用,但我仍無法發送我的Cookie。
Response Headers
Access-Control-Allow-Orig... *
Connection keep-alive
Content-Length 33101
Content-Type application/json
Date Sun, 18 May 2014 15:02:41 GMT
Etag "-796401813"
X-Powered-By Express
access-control-allow-cred... true
Request Headers
Accept application/json, text/plain, */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cookie prgck=s%3AGb1ZXuD0uXHoBbFWIcrmkSFt.%2BNt0pdVa1%2BNhUNITAPOzPjmQxklPpDrdvQz%2BACj084o
Host localhost:1212
Origin http://localhost:8000
Referer http://localhost:8000/app/
User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
它是CORS請求的原因是由於不同的端口。這不僅僅是可以導致這種情況的主機名/域。 – mscdex
它也可能值得發佈您正在使用的相關Express代碼。 – mscdex
Express代碼沒有太多。這是一個從mongodb發送數據的簡單路線。如果我通過瀏覽器訪問api(例如localhost/api/get),它可以正常使用身份驗證。如果我在角度http請求中使用Credentials關閉,則按預期得到401。如果我禁用身份驗證,一切都很完美因此,只有當我嘗試向請求發送cookie時纔會發生「cors block」。 – krypt