1

私は、DeviseTokenAuthとAngularJSフロントエンドを使用してngTokenAuthを使用して、レール4のバックエンドを持っています。
フロントエンドとバックエンドを同じドメインに配備すると、認証が完全に機能します。異なるドメインのSet-Cookieヘッダーを返さないDeviseトークン認証

2つの異なるポートでローカルホスト上で実行されているバックエンドとフロントエンドの両方で、sign_in要求は200 OKで完了しますが、レスポンスにはSet-Cookieヘッダーが含まれないため、クライアントは次のリクエスト。

ここで、両方のシナリオでsign_in応答で受信したヘッダーのコピーが表示されます。
サーバにデプロイされたRAILSバックエンドにローカルで実行されているフロントエンドから認証しようとすると、同じ問題が発生します。 CORSヘッダは、サーバー上でこのように構成されており、すべてがクロス起源について私に罰金だ:

config.middleware.insert_before 0, "Rack::Cors" do 
    allow do 
    origins '*' 
    resource '*', :headers => :any, :methods => [:get, :post, :options] 
    end 
end 

ローカルホスト上

Accept-Ranges:bytes 
Access-Control-Allow-Credentials:true 
Access-Control-Allow-Methods:GET, POST, OPTIONS 
Access-Control-Allow-Origin:example.org 
Access-Control-Expose-Headers: 
Access-Control-Max-Age:1728000 
access-token:XXXXXXXXXXOI9s2x0IuVMA 
Age:0 
Cache-Control:max-age=0, private, must-revalidate 
client:XXXXXXXXXXAP2TsoBZTnjg 
Connection:keep-alive 
Content-Type:application/json; charset=utf-8 
Date:Thu, 04 May 2017 09:28:17 GMT 
ETag:W/"XXXXXXXXXXc86bb292d476d2366d3742" 
expiry:1495099697 
Server:nginx/1.10.0 (Ubuntu) 
Set-Cookie:_differenthood_session=ZE1NWndTUUVmMkNDbWRWckNNbkpKdWh6SVdaVTFlaGN6XXXXXXXXXXcrb2EzSGd3SFQvN2h3Z2IxOE9BMVYrTjV6YmsvRXpWNmN4T213R2V3MEJ1WWc9PS0tbU01Ymt6YkdOc0VIUTFCK1NUVFlMZz09--861a3aebd1d79f224d9ad810a88e5d5f23e114c0; path=/; HttpOnly 
token-type:Bearer 
Transfer-Encoding:chunked 
uid:[email protected] 
Vary:Origin 
X-Content-Type-Options:nosniff 
X-Frame-Options:SAMEORIGIN 
X-Request-Id:c935b76c-d173-48ce-b21c-5e694845148b 
X-Runtime:0.629113 
X-XSS-Protection:1; mode=block 

テストサーバーにデプロイ

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Methods:GET, POST, OPTIONS 
Access-Control-Allow-Origin:http://localhost:9000 
Access-Control-Expose-Headers: 
Access-Control-Max-Age:1728000 
Access-Token:XXXXXXXXXXXAiR5CQmwYpQ 
Cache-Control:max-age=0, private, must-revalidate 
Client:XXXXXXXXXXq2UC7GXE0qbw 
Connection:Keep-Alive 
Content-Length:418 
Content-Type:application/json; charset=utf-8 
Date:Thu, 04 May 2017 09:27:20 GMT 
Etag:W/"XXXXXXXXXX37381b8c1637b2ea1bba96" 
Expiry:1495099640 
Server:WEBrick/1.3.1 (Ruby/2.2.6/2016-11-15) 
Token-Type:Bearer 
Uid:[email protected] 
Vary:Origin 
X-Content-Type-Options:nosniff 
X-Frame-Options:SAMEORIGIN 
X-Request-Id:3ef1f652-b29f-4fe7-bbb9-3de47f1acddf 
X-Runtime:0.653264 
X-Xss-Protection:1; mode=block 

答えて

0

申し訳ありません。 私は詳細な文書(https://github.com/lynndylanhurley/devise_token_auth#cors)を読んで、私の問題を解決した推奨CORS設定を見つけました。追加することにより
:質問に掲示CORS設定へ

:expose => ['access-token', 'expiry', 'token-type', 'uid', 'client'], 

は、問題が解決されます。

関連する問題