2017-01-22 10 views
0

https://api.example.comhttpsに注意してください)に接続するために、Laravel 5.3アプリケーションでGuzzleHttpを使用しようとしています。GuzzleHttpがhttpsにポート80を使用しようとしているのはなぜですか?

<?php 

$client = new GuzzleHttp\Client(); 

$res = $client->request('GET', 'https://api.example.com/accounts', [ 
    'headers' => [ 
     'Accept' => 'application/json', 
     'Authorization' => "Token $token" 
    ] 
]); 

var_dump($res->getBody()); 

しかし、私はそれがURLでhttpsにもかかわらず、ポート80(!)に接続できないというエラーを取得しています。私はポート443(例えばhttps://api.example.com:443/accounts)を指定した場合でも、それはまだ私にポート80については、このエラーを与える:

cURL error 7: Failed to connect to api.example.com port 80: 
Connection refused (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) 

なぜそれがポート443で接続していないのだろうか?なぜポート80で接続しようとしていますか?

+1

apiがリダイレクトしていないことを確認しましたか? – nogad

+0

@nogadまあ、何を知っていますか?生の 'curl'リクエストで出力を確認し、301(永久に移動した)と戻ってきました。面白い。もっと後で調査します。 – fronzee

+0

おかげで何が起きるかわかります;-) – nogad

答えて

2

をリダイレクトしています'Authorization' => "Token {$token}"を意味しました。私はこれ以上に見て、私はhttps://api.example.com/accounts

を要求するとき、私は私がhttphttpsからリダイレクトされることになる理由として困惑が、問題は、APIである発見された301 Moved Permanently/Location: http://api.example.com/accountsを得ていたことを発見しました。あなたには、があります。にはスラッシュを追加してください。 https://api.example.com/accounts/はポート80にリダイレクトされませんが動作します。

0

トークン変数(および二重引用符)に$が足りませんでしたか?

はおそらく、あなたは多分それがここで自分の質問に答えるために行くので、間違った認証ヘッダの

+0

これは私が明らかにしたくない実際のトークンのプレースホルダです。私のコードでは '' Authorization '=>' Token 'があ​​ります。 $ token' – fronzee

関連する問題