質問: 知識が乏しいので、言葉足らずの質問になることを初めにご容赦ください。 参考になる情報のURL等を貼り逃げしてもらうだけでも助かります。 足りない情報があれば随時追記致します。 前提 シングルサインオン?もどきの実装を目標としています。 local開発環境:laravel + Vue.Js 接続先(別サーバー):ZnedFrame2 接続先のlogin画面をまねて例を書くと下記のような形です。 ``` -- ZendFrame2 ``` submitを行うとホーム画面に遷移します。 Controllerでやっている処理は ``` // 概略 ・ログイン用のテーブルにレコードが存在する場合は不可 ・ログイン成功後はホーム画面までのパス(URL)を返す。 ``` このZendで行ってるpost処理?を 開発環境のフロント(Vue.js)かバックエンド(laravel)でpost送信してloginを成功させて帰ってきたURLを使用してホーム画面まで遷移させる事は可能でしょうか? 調べて色々試しても一切うまく動かず1週間以上煮詰まっているのでご協力お願いしますm(._.)m Vueから行う場合はCORS制約等がうまく解決できず。 Requestのheaderに下記の情報を入れたりしてもCORSの制約が解除できず Content-type:application/x-www-form-urlencoded Access-Control-Allow-Origin:* バックエンドでfile_get_contetsやcurlを使用してもloginのファイルの中身をとることしかできずで上手く動作ができません。 getのクエリにパスワードの情報を入れたくないのでpost通信したいです...。
回答: CORSの制約は別サーバ側が許可する必要があります。 別サーバのレスポンスヘッダーにCORSを追加しましょう。 またバックエンドでfile_get_contetsやCURLでうまくいかないということは、パスワードとログインIDを受け付ける以外に別の仕組みがあるのかと想像します。正直こちらは別のシステムの仕様を紐解かないと難しいでしょう。 例えばセッションを利用したログイン維持機能があるのでセッションIDをきちんとリクエストを送らなければいけないとか そもそも外部ドメインからのPOSTはCSRFと呼ばれる脆弱性の一つなので、同じリファラーが必要とか、ワンタイムトークンが発行されているとか、何らかの制約がされている可能性があります。 そこはきちんと外部サービスの中身を見てみましょう。