先輩方の知見をお借りできますと幸いです。
現在、php(Laravel)でWebアプリを作成しています。
できるだけLaravelの中で完結したかったのですが、どうしてもnode.jsのライブラリを使う必要があり、一部node.js(Express)を組み込んで試みています。
node.jsの理解自体も浅いのですが、ポートを指定してリクエストをすることで、サーバ上でJSファイルを動かすものだということは理解できました。
そこで、以下のような実装を試みています。
①Laravel側で
html
1<a href="http://localhost:3000/test"></a>
のとしてGETでリクエスト
②Express側で
express
1app.get('/test', function(req, res){ 2async function func() { 3var val = await ※値を持ってくるライブラリ※(); 4res.redirect('http://localhost:8000/return'); 5} 6func(); 7})
として、ライブラリを動作して変数valに格納し、
ポートを指定して、Laravelに戻す。
という実装をしました。
ご教授いただきたいのは、二点です。
・GETリクエストのURLの指定方法について。
LaravelからExpress、ExpressからLaravelへのルーティングで、ポートを指定しないといけないことは理屈では理解しつつも、このようにサイト内導線をフルパスで書くことに違和感があります。
他に、適正な書き方があるような気がしておりますが、この記述に問題がないか、ご意見を頂けますと幸いです。
・Expressからの戻り値について
Express側で取得した変数valを、Laravel側で使用したいと考えておりますが、Laravel側にどう戻すのかが調べても分かりませんでした。
こちら、Express側の変数valを、Laravel側で使えるようにする方法があれば、ご教示を頂けますと大変助かります。
また、可能であればページ遷移をしなくとも、戻り値だけが取得できないかと、ajaxも試しました。
ajax
1type:'GET', 2url:'http://localhost:3000/test', 3dataType:'string',
しかし、コンソールに
console
1Access to XMLHttpRequest at 'http://localhost:3000/test' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
というエラーが出てしまい、見るとクロスドメインでajaxリクエストができないインターネットのルールに引っかかっているようでした。
しかし、ドメインは同じなので、ポートが違うと異なるドメイン扱いになるのかと勉強になりました。
理想は、ページを遷移しないでnode.jsをサーバ側で動かして、戻り値だけを得られればベストですが、こちらの方法ももしあれば、ご教示頂けますと大変助かります。
かなり初歩的な質問かと思いますが、、、よろしくお願いいたします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/25 14:02 編集