2017-06-28 9 views
0

私はWebアプリケーションを開発しています。私はフロントエンドフレームワークとしてAngunlar 2を、バックエンドフレームワークとしてCodeIgniter 3を使用しています。私はAngular-CLIを使用しているので、Angularアプリケーションはポート4200で動作し、「サーバー側」はポート80で動作します。同じコンピュータでAngular 2とPHPのクロスドメイン通信を避ける

AngularからPHPへの投稿リクエストをしようとすると、異なるポートが原因でドメイン間の要求が発生する可能性があります。 Chromeの[ネットワーク]タブで確認したところ、2つのリクエストが完了したことがわかりました(1つはオプション、もう1つは投稿自体)。

私の問題は、投稿体を受け取ることができないということです(私はContent-Lenghtを私の見出しに変更しており、常に実行時にあります)。

私が設定したヘッダは以下のとおりです。

header('Content-Type: text/plain; charset=utf-8'); 
header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, POST'); 
header('Access-Control-Allow-Headers: Content-Type'); 

質問は次のとおりです。ここでは、クロスドメインを回避する方法はありますか?当然、私はポート80でサービスを開始しようとしましたが、それは忙しいです。クロスドメインを避ける方法がない場合は、誰かが私にこのことを続ける方法を教えてください。

おかげ

+0

私はリクエストを得ることに問題はないと言及しなければなりません。問題は私が投稿要求にあり、問題は私がボディに何も受け入れていないということです。(content-lenghtは2です。私はそれを変更することはできません) – user3368457

+0

同じ問題を抱えている人には、@ Raiper34が書いた解決策は完璧です。それでも問題が解決しない場合は、$ _POST配列が設定されていない可能性があります。これに対する解決方法は次のとおりです。https://stackoverflow.com/a/14794856/3368457 – user3368457

答えて

1

あなたは、サーバー側の設定がenoughtではないので、あなたが変更し送信する必要があり、「グーグル・クローム--disable-ウェブセキュリティ--user-データDIR」またはこのプラグインhttps://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi UDE実行することができますAPI呼び出しもあります。

+0

Perfect!私はそれを試して、彼らは同じドメイン内にあるかのように要求を行うことができます – user3368457

+0

私はまだ要求のボディを受信して​​いません。私はサーバー側でこれを試してみます: 'echo json_encode($ _ POST));'何かを受け取ったかどうかを確認するために何もしません... – user3368457

+0

サーバー側で意味しますか? – Raiper34

関連する問題