質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

4109閲覧

Laravelをhttps化したら、postができなくなった

woodStock

総合スコア6

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/08/04 03:04

発生している問題

下記のようにLaravelを用いたwebサービスをhttps化したら、
postやlaravel socialiteを利用したtwitter認証ができなくなってしまいました。

・cloudfront→ALB→EC2

・https→cloudfront→ALB→EC2
※ https
はCertificate Managerで発行

postの場合はTokenMismatchExceptionが発生し、
laravel socialiteの場合はstatus code 500で返ってきます。

原因

原因はhttps化前後で、
postまたはtwitter認証後のredirect時のRequest($request)内の#session:Storeの値が下記のように異なるからではないかと考えていますが、解決方法がわかりません。

・https化前

#session: Store {#▼ #id: "XXXXXXXXXXXXXXXXXXXXXXXXX" #name: "XXXXXXXXXXXXXXXXXXXXXXXXX_session" #attributes: array:4 [▼ "_flash" => array:2 [▼ "old" => [] "new" => [] ] "_token" => "XXXXXXXXXXXXXXXXXXXXXXXXX" "url" => array:1 [▼ "intended" => "http://XXXXXXXXX/XXXXXXXXX/XXXXXXXXX" ] "_previous" => array:1 [▼ "url" => "http://XXXXXXXXX/XXXXXXXXX" ] ] #handler: DatabaseSessionHandler {#▶} #started: true}

・https化後

#session: Store {#▼ #id: "XXXXXXXXXXXXXXXXXXXXXXXXX" #name: "XXXXXXXXXXXXXXXXXXXXXXXXX_session" #attributes: [ "_token" => "XXXXXXXXXXXXXXXXXXXXXXXXX" ] #handler: DatabaseSessionHandler {#▶} #started: true}

試したこと

・apacheの再起動
・laravelのキャッシュクリア

補足情報(FW/ツールのバージョンなど)

環境
・ Laravel 5.5
・ PHP 7.0
・ Appache 2.4
・ Amazon Linux AMI release 2018.03

この問題にずっとハマっており、中々解決できずにいます。
恐れ入りますが、解決方法のご教授お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ツイッター認証のコールバックは使用してますか?している場合コールバック時のURL(OAUTH_CALLBACKなど)をhttpsへ修正済みでしょうか

またキャッシュクリアはどのレベルで行いましたか?よりディープなキャッシュクリアで治るかもしれません。
Laravel キャッシュクリア系コマンドなど

ブラウザ側のクッキーを全削除なども試してみると良いかもしれません

投稿2018/08/06 03:27

namda

総合スコア705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

woodStock

2018/08/06 15:53

ご連絡ありがとう御座います! ご紹介して下さった方法を試したのですが、やはり上手くいきませんでした、、、 具体的には実行したのは下記の通りです。 > ツイッター認証のコールバックは使用してますか?している場合コールバック時の? > URL(OAUTH_CALLBACKなど)をhttpsへ修正済みでしょうか こちらに関しては修正済みでした! キャッシュに関しては下記まで実行していましたので、 ご紹介して下さったサイトでその他のキャッシュ削除も実行致しました! > php artisan cache:clear > php artisan config:clear > php artisan route:clear > php artisan view:clear > composer update > ブラウザ側のクッキーを全削除なども試してみると良いかもしれません こちらも削除致しました!
namda

2018/08/07 02:42

であればhttp→https(ELB→EC2や逆とか)などの暗黙的なリダイレクトされていて2重送信扱いでトークンが無効化されている可能性が考えられます。 5.3(5.4)の情報ですが、 https以外の場合httpsを強制するよう `redirect()->secure($request->getRequestUri())` にする方法があります。 https://qiita.com/sawadashota/items/2f1c7b1e2905519c4e6a
woodStock

2018/08/10 16:50

ご連絡が遅くなり大変申し訳御座いません。 routes/web.phpで下記の実装を行なっているのですが、 middleware側で実装した方がよろしいでしょうか? ``` if(config('app.env') === 'production') { URL::forceScheme('https'); } ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問