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

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

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

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

PHP

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

1回答

968閲覧

【laravel】ローカルで、ajaxによるPOSTの際にレスポンスcookieを受け取ることができない。

退会済みユーザー

退会済みユーザー

総合スコア0

Apache

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

PHP

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/08/22 04:12

編集2022/01/12 10:55

###前提・実現したいこと
ajaxを使ってPOSTされたcookie情報を受け取ることができません。
かつ上記のバグが発生しているのがローカル環境のみとなっております。

###発生している問題・エラーメッセージ
404エラーが返ってきます。

Sorry, the page you are looking for could not be found.

###該当のソースコード

php

1PublicController.php 2const SESSION_KEY = 'aa'; 3const TYPE_KEY = 'a_type'; 4const STAGE_KEY = 'a_stage'; 5 6public $id = null; 7 8public function __construct() 9{ 10 $this->beforeFilter(function($route, $request) 11 { 12 $session = $request->session()->get(self::SESSION_KEY); 13 if ($session) { 14 $this->id = (int)$session; 15 } elseif(($token = $request->cookie(self::SESSION_KEY)) && (($id = Cookie::findByToken($token, self::SESSION_KEY)) !== NULL)) { 16 $this->id = (int)$id; 17 $request->session()->put(self::SESSION_KEY, (int)$id); 18 } 19 }); 20 } 21public function post() { 22}

php

1Models/Cookie.php 2public static function findByToken($token, $type) { 3 $cookie = self::select('id', 'type', 'uid')->where('token', $token)->first(); 4 if (!$cookie) { 5 \Cookie::forget($type); 6 return null; 7 } 8 if (!starts_with($cookie['type'], $type)) { 9 self::where('id', $cookie['id'])->delete(); 10 \Cookie::forget($type); 11 return null; 12 } 13 $type = substr($cookie['type'], strlen($type)); 14 if ($type) { 15 return [ 16 'type' => substr($type, 1), 17 'id' => $cookie['uid'], 18 ]; 19 } else { 20 return $cookie['uid']; 21 } 22}
Controller.php public function beforeFilter($filter, array $options = []) { $this->beforeFilters[] = $this->parseFilter($filter, $options); }

###試したこと
ローカルでのみ生じているバグですので、コードに問題はないと考えておりますので、コードでの変更は特に加えておりません。
php.iniの修正(memory_limitなど)

###補足情報(言語/FW/ツール等のバージョンなど)
laravel5.1、php7、xampp、eclipseを使用しております。

###更新①
php.iniの更新箇所
session.use_cookies = 1
session.use_only_cookies = 0
session.auto_start = 1
session.cookie_path = /
session.cookie_httponly = 1
session.gc_maxlifetime = 1440

###更新②

NotFoundHttpException in Application.php line 879: in Application.php line 879 at Application->abort('404') in PublicController.php line 155 at PublicController->post() at call_user_func_array(array(object(PublicController), 'post'), array()) in Controller.php line 256 at Controller->callAction('post', array()) in ControllerDispatcher.php line 164 at ControllerDispatcher->call(object(PublicController), object(Route), 'post') in ControllerDispatcher.php line 112 at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102 at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114 at ControllerDispatcher->callWithinStack(object(PublicController), object(Route), object(Request), 'post') in ControllerDispatcher.php line 67 at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\PublicController', 'post') in Route.php line 203 at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134 at Route->run(object(Request)) in Router.php line 708 at Router->Illuminate\Routing\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102 at Pipeline->then(object(Closure)) in Router.php line 710 at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 673 at Router->dispatchToRoute(object(Request)) in Router.php line 635 at Router->dispatch(object(Request)) in Kernel.php line 236 at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50 at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 36 at VerifyCsrfToken->handle(object(Request), object(Closure)) at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49 at ShareErrorsFromSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62 at StartSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59 at EncryptCookies->handle(object(Request), object(Closure)) at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 at CheckForMaintenanceMode->handle(object(Request), object(Closure)) at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102 at Pipeline->then(object(Closure)) in Kernel.php line 122 at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87 at Kernel->handle(object(Request)) in index.php line 53

上記くらいだったかと記憶しています。

わかりにくいところが多々あるかと思いますが、何卒よろしくお願いいたします。

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

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

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

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

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

yambejp

2017/08/22 05:49

ローカル環境とは、ファイルベースでやっているという意味ですか?それともhttpベースで処理はしているけどインターネットに公開されていないという意味ですか?
退会済みユーザー

退会済みユーザー

2017/08/22 06:00

httpベースですがインターネットに公開していない後者になります。
aro10

2017/08/22 06:30

ローカル環境というのがWindowsのXAMPでApacheによる環境で動かないと言う事ならば、XAMPのインストールのデフォルト設定から変更した内容があればそれを含めて詳細を書いたほうが良いかと思います。
退会済みユーザー

退会済みユーザー

2017/08/22 06:34

ご指摘ありがとうございます。修正いたします。
aro10

2017/08/22 07:04

ajaxのPOST先のURLとLaravelであればajaxの対象として想定しているルート定義も記載すると何か差異部分が明らかになるかもしれません
aro10

2017/08/22 07:20

あとはajax以外のものはつながるかの確認はどうでしょうか 毎度の事ですが、php artisan route:clear、composer dump-autoload、Webサーバー再起動の3点セットも試してみてください。
退会済みユーザー

退会済みユーザー

2017/08/22 07:25

上記3点セット試したのですが、それでもやはりだめでした。set-cookieが表示されておりません。
CHERRY

2017/08/22 08:17

エラーが発生した際のローカル環境のWebサーバーのログを提示してください。
退会済みユーザー

退会済みユーザー

2017/08/22 08:34

apacheのエラーログのことでしょうか?それであれば、先ほどの「ページが見つかりません」以外には表示されません。
退会済みユーザー

退会済みユーザー

2017/08/22 08:47

laravelのエラーログを更新いたしました。
fagai

2017/08/22 09:42

試しにlocalhostドメインではなく、127.0.0.1でアクセスするとどうなりますでしょうか?
退会済みユーザー

退会済みユーザー

2017/08/22 09:44

Welcome to XAMPPと、dashboardに飛びました。
fagai

2017/08/22 09:48

色々漁ってた所、localhostドメインの場合にcookieが動作しないという記事がいくつかあったので試しにドメイン名を変えるか、php artisan serveコマンドでサーバーを立ち上げてみて動作するか確認できますか?
退会済みユーザー

退会済みユーザー

2017/08/22 09:57

apacheのhostなどのドメインを変えてみましたが、cookieは動作しませんでした。また、artisanのserveを行ったところ、「Laravel development server started on http://localhost:8000/」と表示されました。
fagai

2017/08/22 09:58

むむ・・・となると違うようでした、すみません。
fagai

2017/08/22 10:01

試しにartisanのserveで動かしたサーバーでもcookieは動きませんか? 動かない場合、apache等のサーバーの問題ではないことがわかるので。
退会済みユーザー

退会済みユーザー

2017/08/22 11:18

artisanでサーバーを動かした場合、どのようにしてcookieが動いていると確認できるのでしょうか?
fagai

2017/08/22 11:21 編集

いままでどうやって確認していたのか気になるのですが、、、現在問題になっているページが404になるかどうかを確認すればよいのではないでしょうか? あとはブラウザに搭載されている開発者ツールなどからですかね
退会済みユーザー

退会済みユーザー

2017/08/22 11:36

デバッガ―ツールで確認をしていましたが、artisanで動かした後、普通にURLをたたけばよいのでしょうか?
fagai

2017/08/22 11:39

そうですね。基本的にはそれだけで見れると思います。モジュールなどが不足していない限り。。。
退会済みユーザー

退会済みユーザー

2017/08/22 11:54

artisanで動かした後でもPOSTでエラーが生じてしまいました。つまり、原因が別にあるということでしょうか?
fagai

2017/08/22 11:58 編集

そうなるとapacheは原因ではなさそうですね。PHP自体の設定に問題がある(ほぼありえないと思います。phpもxamppから動かしてないなら違うものですし)か、Laravelの設定に問題があるかになると思います
退会済みユーザー

退会済みユーザー

2017/08/22 11:58

ありがとうございます。fagai様としてはlaravelの設定に原因があるとにらんでらっしゃるのですね。無知で大変申し訳ございませんが、laravelの設定というのは、envファイルのことでしょうか?
fagai

2017/08/22 12:04

.env以外でいじった設定があるのであればそれも可能性にはあるかと思いますが、.envファイルですね。
退会済みユーザー

退会済みユーザー

2017/08/22 12:12

AWSと接続する関係でDB関係とSESSION_DOMAIN、API_PREFIX、APP_KEYを変更しています。
fagai

2017/08/22 14:14

SESSION_DOMAINはsession_idを入れるCookieのドメインなのでSESSION_DOMAINが変更されている場合、sessionが動かない気がします
退会済みユーザー

退会済みユーザー

2017/08/22 14:48

本番に合わせてみましたが、それでも応答cookieが得られませんでした。cookieがまったく応答していない状況にあります
fagai

2017/08/22 14:56

もしかしてNULLに変えていましたか?本番と同じ値になっているのかと思いました。また、変更した後にphp artisan config:clearなどは行いましたか?
退会済みユーザー

退会済みユーザー

2017/08/22 15:01

意図的にnullに変えたわけではないのです。set-cookieと応答cookieがなぜか引き継がれないので困っている状況になります。configをclearした後も確かめましたが、状況は変わらずでした。
guest

回答1

0

エラーを見る限りページが見つからないだけのように見受けられます
apacheの公開ディレクトリとinclude_pathがきちんと設定されているか
再確認してみてください

投稿2017/08/22 06:05

yambejp

総合スコア114572

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

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

退会済みユーザー

退会済みユーザー

2017/08/22 06:30

ご回答ありがとうございます。 公開ディレクトリですが、同一のパスで二つのサイトを運用しております。先程cookieのdomainを確認したところ、別サイトを参照しておりました。 上記のコードはAlocalのものなのに、domainではBlocalが記載されていました。 これは関係があるのでしょうか?
yambejp

2017/08/22 06:52

マルチドメインで処理しているということでしょうか? DNSさえクライアントからきちんとIPアドレスを引けるなら 問題ないとは思いますが、別ドメインでアクセスしてきたときに公開ディレクトリに 適切なファイルがないのであれば当然file not foundになるでしょう またcookieはドメイン指定をする場合があるのでテスト環境で 別ドメインで運用されていればただしく保存参照できないかもしれません
退会済みユーザー

退会済みユーザー

2017/08/22 07:13

laravelにてdomainが設定されており、 'domain' => env('SESSION_DOMAIN', NULL), となっておりました。ここでSESSION_DOMAINがAのほうが指定されているのだと思います。
退会済みユーザー

退会済みユーザー

2017/08/22 07:27

失礼いたしました。 これは「.env」のSESSION_DOMAINが指定されているだけでした。 ですので、問題点は別の箇所にあるようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問