我正在使用服务器端的node.js和express.js以及客户端的angular.js进行项目。我使用passport.js在服务器端设置了身份验证。因此,当我登录会话cookie时,我可以通过浏览器访问api,没有任何问题。但是当我尝试使用http请求angular.js中的api的url时,我得到“cors blocked”(是的,我做了那个)。服务器允许凭据,客户端发送withCredentials:true。有什么问题?
有趣的是服务器和客户端甚至不在不同的域中。他们都在localhost。但是,由于服务器“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
答案 0 :(得分:1)
目前尚不清楚您在Express服务器上执行了什么操作,但查看您发布的标头似乎启用了Access-Control-Allow-Credentials但您没有定义Access-Control-Allow-Origin。
后者是实际启用CORS所必需的。因此,您的Express服务器必须同时设置:
Access-Control-Allow-Origin: http://my.domain.com:8080
Access-Control-Allow-Credentials: true;