我正在开发一个webapp。我正在我的机器上本地开发它,在localhost:8000上运行。该应用程序需要在localhost:8888上登录我的计算机上运行的另一台服务器。在生产中,这些将在不同的子域中。
我的angularjs客户端代码是:
postData = new Array('user_id=' + id, 'token=' + token);
$http.post(url, postData.join('&'), {withCredentials:true, headers: {'Content-type': 'application/x-www-form-urlencoded'}})
.success(successHandler)
.error(errorHandler);
我的服务器返回一个cookie,但浏览器不会在后续请求中发送该cookie。我的服务器有以下CORS标头:
self.set_header('Access-Control-Allow-Headers', 'origin, content-type, accept, authorization')
# self.set_header('Access-Control-Allow-Max-Age', 21600)
self.set_header('Access-Control-Allow-Methods', 'HEAD, OPTIONS, GET, POST')
self.set_header('Access-Control-Allow-Origin', 'http://127.0.0.1:8000')
self.set_header('Access-Control-Allow-Credentials', 'true')
我尝试将'Access-Control-Allow-Origin'作为'*',但Chrome表示当withCredentials为true时我无法使用通配符域。
Chrome仍未在后续请求中向服务器发送标头。
我做错了什么?我在OSX上,因为这将与cordova一起运行,我正在寻找任何来让它现在正常运行。