2017-08-02 11 views
1

私はフロントエンドにAngularJS、バックエンドにPHPを使ってアプリケーションを開発しています。XDebugはhttpリクエスト後にブレークポイントで停止しません

これらはRESTと通信します。

フロントエンドはbrowsersyncを実装して更新時に更新します。

私はPhpStormでXDEBUGを使用してPHPコードをデバッグしています。

BroswerSyncを使用する前に、リクエストがサーバーに送信された後、ブレークポイントでPHPコードが一時停止しましたが、今は動作しません... PhpStormのPostmanや内部RESTクライアントなどのツールでテストしましたコードは一時停止することができますが、Angular自体からのものではありません。

私は新しいタブでGETリクエストを開くだろう...私は何度も何度も(フォームなど)に同じデータを入力せずに複数回をデバッグできるよう簡単にHTTPリクエストを繰り返す方法を見つけるために

をしようとしていた

答えて

1

(Chrome Dev Networkタブのリクエストを右クリックして)、ブレークポイントは機能しますが、POSTリクエストは機能しません。

どういうわけか、Stack Overflowの助けを借りて、Chrome DevからのリクエストをCURLとしてコピーし、--cookie "XDEBUG_SESSION=PHPSTORM"を追加するとXDebugがトリガーされることがわかりました。

一般に、ChromeからXDebugを起動するには、「XDebugヘルパー」をインストールする必要があります。これは、 "XDebug Helper"機能の1つがXDebugをトリガーするクッキーを追加することであるという結論に至りました。

Angular HTTPリクエストにwithCredentials: trueを追加しました。 だから、それは次のようになります。

$http.get(path, {withCredentials: true}); 

var options = { 
       headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
       withCredentials: true 
       } 

$http.post(path, params, options); 

また、サーバ側のレスポンスヘッダを更新する必要があります:あなたが送った場所に応じて、原点を設定する必要が

header("Access-Control-Allow-Origin: http://localhost:3000"); 
header("Access-Control-Allow-Credentials: true"); 

注意からの要求。これはセキュリティのレイヤーを追加します。その前には*を使用し、どこからでも要求を受け入れることになるからです。複数のホストを簡単に設定するために

$http_origin = $_SERVER['HTTP_ORIGIN']; 

//The static method returns an array of hosts 
if (in_array($http_origin, Config::getAllowedOrigins())) 
{ 
    header("Access-Control-Allow-Origin: $http_origin"); 
    header("Access-Control-Allow-Credentials: true"); 
} 

は、この説明が役立つことを願っています!

関連する問題