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

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

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

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

Laravel 5

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

1回答

2921閲覧

Reactからapiサーバーのデータを取得できない

alberorana

総合スコア52

PHP

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

Laravel 5

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/07/02 00:50

編集2018/07/02 03:09

前提・実現したいこと

Reactのaxiosを用いてAPIサーバーからjsonを取得したい。
フロントエンド:React.js
バックエンド:Laravel

API側でログインしている時のみJSONを返すようにしたいため、Laravelのルーティングでミドルウェア(auth)を利用。

発生している問題・エラーメッセージ

apiをブラウザから叩くと正常に表示されるが、Reactのaxios経由だと下記のエラーになってしまう。

404 not found もしくは 401 (Unauthorized)

ブラウザから直接アクセス
コンソール

\Auth::check(); ``` でtrueが返ってくることは確認済みになります。 ### 該当のソースコード **API(Laravel)** routes/web.php

Route::group(['prefix'=>'v1','middleware'=>['auth']],function(){

Route::group(['prefix'=>'movie'],function(){ Route::get('/contents', 'MovieController@contents'); Route::get('/addContents', 'MovieController@addContents'); Route::get('/{id}/getChapter', 'MovieController@getChapter'); Route::get('/{id}/getReview', 'MovieController@getReview'); Route::post('/postReview', 'MovieController@postReview'); Route::get('/review/commit', 'MovieController@reviewCommit'); Route::get('/{id}', 'MovieController@detail'); Route::get('/list', 'MovieController@index'); });
**React**

import axios from 'axios';
const host = window.location.protocol + '//api.' + window.location.hostname ;
const path = window.location.pathname

export const getIndex = nowId =>
axios
.get(host + '/v1/movie/' + nowId, { })
.then((results) => {
const status = results.status
if(typeof result === 'undefind'){
return status
}
const indexDatas = results.data[0]
return indexDatas
}).catch(
error => {}
);

### 試したこと 'middleware'=>['auth']を外してみるとうまく取得ができます。 ### 補足情報(FW/ツールのバージョンなど) php7.0 Laravel :5.5.28 React:1.6.2 ###追記 本文に漏れていましたが、認証はAuthを使ったログイン認証を用いております。 その際にフロント(React)側から送るリクエストヘッダーは COOKIE が正しい値になりますでしょうか? API側はこのように分岐しております。 ```ここに言語を入力 protected function unauthenticated($request, AuthenticationException $exception) { if(!Auth::check()) { return response("unauthorized.", 401); }else{ return response('true', 200); } > }

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

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

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

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

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

guest

回答1

0

axios から api リクエストするときに適切なヘッダーが適用されてないため 401 (Authorization Required) エラーが出ていると思います。

X-TokenYOUR_TOKEN はプロジェクトによって変わります。

axios.get(`${host}/v1/movie/${nowId}`, {}, { headers: { 'X-Token': 'YOUR_TOKEN' }, });

投稿2018/07/02 01:02

編集2018/07/02 01:12
og24715

総合スコア832

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

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

alberorana

2018/07/02 01:17

さっそくのご回答ありがとうございます。 おそらく認証に必要な情報だと思いますので、一度調べて実装してみます。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問