アクセストークンを取得できるRESTエンドポイントがあります。アクセストークン(JSON Webトークン、JWT)を取得して値を環境変数にエクスポートするには、次の手順を実行します。
export ACCESS_TOKEN=$(curl -i -H 'Content-Type: application/json' -X POST -d @credentials.json http://localhost:8080/api/user/login)
次に、このトークンをコンソールにエコーして、次のecho $ACCESS_TOKEN
ような結果を得ます。
eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1MTBlMjRiYWZmZTY0NjMyOGRiNjg1N2ViMTdlZTE1NCISImFkZHIiOiIwOjA6MDowOjA6MDowOjEiLCJzy2H LCJp Y XQiOjE0NjgzNzg5NDV9.COGBYBrx3oQva2kIiObBOYkEFIL2BODcrSivxWvhuLS-aLsrMGO2z2aCddpwS2yZUB88Q3GOIU8QklbnfRMprQ
最初の文字の前にスペースがあることに注意してください。コンソールから直接値をエクスポートしてから再エコーすると、スペースがまだ残っているため、これは問題にならないと思います。
export ACCESS_TOKEN=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1MTBlMjRiYWZmZTY0NjMyOGRiNjg1N2ViMTdlZTE1NCIsImFkZHIiOiIwOjA6MDowOjA6MDowOjEiLCJzY2hlbWUiOiJodHRwIiwicG9ydCI6IjgwODAiLCJpYXQiOjE0NjgzNzg5NDV9.COGBYBrx3oQvA2kIiObBOYkEFIL2BODcrSivxWvhuLs-aLsrMGO2z2aCddpwS2yZUB88Q3GOIU8QklbnfRMprQ
このトークンを使用して REST エンドポイントをテストし、次の操作を試みる必要があります。
curl -i \
-H 'x-access-token: '$ACCESS_TOKEN'' \
-X POST -d @mydata.json \
http://localhost:8080/api/data
ただし、次のような結果が表示されます。
カール:(7)サーバーに接続できません Curl:(3)URLに無効な文字が含まれています。 カール:(6)ホストを解決できません:サーバー Curl:(3)URLに無効な文字が含まれています。 カール: (6) ホストを解決できません: Access-Control-Allow-Methods カール:(6)ホストを確認できません:POST、 カール:(6)ホストを確認できません:PUT、 カール:(6)ホストを確認できません:GET、 カール:(6)ホスト:オプションを確認できません。 Curl:(3)URLに無効な文字が含まれています。 カール: (6) ホストを解決できません: Access-Control-Max-Age Curl:(3)URLに無効な文字が含まれています。 カール: (6) ホストを解決できません: Access-Control-Allow-Headers カール:(6)ホストを確認できません:ソース、 カール: (6) ホストを確認できません: X-Requested-With, カール:(6)ホストを解決できません:コンテンツタイプ、 カール: (6) ホストを確認できません: 受け入れ、 Curl:(3)URLに無効な文字が含まれています。 カール: (6) ホストを解決できません: Access-Control-Allow-Credentials Curl:(3)URLに無効な文字が含まれています。 カール:(6)ホストを解決できません:コンテンツタイプ Curl:(3)URLに無効な文字が含まれています。 curl:(6)ホストを解析できません:content-length Curl:(3)URLに無効な文字が含まれています。 カール: (6) ホストを確認できません: 日付 カール:(6)ホストを確認できません:水曜日、 カール:(7)ホストを確認できません:水曜日、 カール:(6)ホストを確認できません:7月 カール:(7)ホストを確認できません:7月 カール: (6) ホストを確認できません: 03:02 Curl:(3)URLに無効な文字が含まれています。 Curl:(3)URLに無効な文字が含まれています。 カール:(6)ホストを確認できません。 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1MTBlMjRiYWZmZTY0NjMyOGRiNjg1N2ViMTdlZTE1NCIsImFkZHIiOiIwOjA6MDowOjA6MDowOjEiLCJzY2 iLCJpYXQiOjE0NjgzNzg5NDV9.COGBYBrx3oQvA2kIiObBOYkEFIL2BODcrSivxWvhuLS-aLsrMGO2z2aCd HTTP/1.1 100 続き HTTP/1.1 403 禁止 サーバー: Apache-Coyote/1.1 アクセス制御を許可するメソッド:POST、PUT、GET、OPTIONS、DELETE アクセス制御最大期間:3600 アクセス制御許可ヘッダー: Origin, X-Requested-With, content-type, accept, x-access-token アクセス制御を許可する資格情報:true コンテンツの長さ:0 日付: 2016年7月13日 水曜日 03:23:04 GMT 接続:閉鎖
export ACCESS_TOKEN=....
シェルで同じコマンドを直接実行すると、curl
すべてがうまく機能します。
また、エクスポートをsh
ファイルに入れて、上記curl
のコマンドを実行すると機能します。
#!/bin/bash
export ACCESS_TOKEN=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1MTBlMjRiYWZmZTY0NjMyOGRiNjg1N2ViMTdlZTE1NCIsImFkZHIiOiIwOjA6MDowOjA6MDowOjEiLCJzY2hlbWUiOiJodHRwIiwicG9ydCI6IjgwODAiLCJpYXQiOjE0NjgzNzkwMjB9.lV6jSf9w5_AbsPrNcWcgQpS-DWQVxnH65u06BDGIyL-ST_gg4xXZ2KLAs-kbwckRB3OFy637G1op6PZ2tpHdUQ
私はここで何が間違っているのか知っていますか?
答え1
問題は使用法にあります。-i
これは、出力にヘッダーが含まれるためです。
奇妙なことに、そうしないと、echo "$ACCESS_TOKEN"
REST応答を汚染する返されたヘッダーは表示されません。
ちょうど削除する-i
と動作します。