ノード/エクスプレスサーバーでAngular Webアプリケーションを使用してログインするためにストームパスを使用します。これはすべて、Safari を除くほとんどの最新のブラウザーでうまく機能します。アクセストークンクッキーを使ったものらしい。ただし、これがバグかどうかはわかりません。
(ユーザー名とパスを使用して)ログインすると、POST リクエストはうまくいき、次のようになります。
POST /login HTTP/1.1
Host: ****api.herokuapp.com
Content-Type: application/x-www-form-urlencoded
Origin: http://app.****.com
Content-Length: 30
Connection: keep-alive
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7
Referer: http://app.****.com/
Accept-Language: en-us
Accept-Encoding: gzip, deflate
username=***&password=********
これはすべてうまくいき、次の応答を返します。
HTTP/1.1 200 OK
Server: Cowboy
Connection: keep-alive
X-Powered-By: Express
Access-Control-Allow-Origin: http://app.****.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, Content-Type
Access-Control-Allow-Credentials: true
Set-Cookie: access_token=eyJraWQiOiIySUxB****unsEg; path=/; expires=Wed, 06 Jan 2016 16:01:38 GMT; httponly
Set-Cookie: refresh_token=eyJraWQiOiIySUxBNV&****LlwrlEtNhzI; path=/; expires=Sun, 06 Mar 2016 15:01:38 GMT; httponly
Date: Wed, 06 Jan 2016 15:01:38 GMT
Transfer-Encoding: chunked
Via: 1.1 vegur
ログイン リクエストの後、ルートをロードする前に、ユーザー プロファイル データに対して /me リクエストを実行します。ただし、このリクエストは HTTP 401 を返します。
GET /me HTTP/1.1
Host: ****api.herokuapp.com
Origin: http://app.****.com
Connection: keep-alive
If-None-Match: W/"8c4-kH0dxMVw01EmGs/YFtZjXg"
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7
Accept-Language: en-us
Referer: http://app.****.com/
Accept-Encoding: gzip, deflate
別のブラウザー (firefox) では、access_token Cookie が /me 要求と共に送信されます。サファリがリクエストとともにクッキーを送信しない理由がわかりません。その結果、要求は許可されません (401)。誰かがこれを修正する方法を知っていますか、それともStormpathのバグですか