我正在使用前端的AngularJS和后端的PHP开发应用程序。
他们与REST沟通。
前端实现browsersync以刷新更新。
我在PhpStorm中使用XDEBUG调试PHP代码。
在我们开始使用BroswerSync之前,PHP代码会在请求发送到服务器后暂停在断点上,现在它不起作用...我们使用Postman和内部REST客户端等其他工具进行了测试PhpStorm,代码确实设法暂停,但不是来自Angular本身。
答案 0 :(得分:1)
我试图找到一种方法来轻松重复HTTP请求,这样我就可以多次调试而不会一次又一次地填充相同的数据(如表单)......
我会在新标签页中打开GET请求(通过右键点击Chrome开发者网络标签中的请求),断点可以正常工作,但不会发布POST请求。
不知何故,在Stack Overflow的帮助下,我发现将Chrome Dev中的请求复制为CURL并添加--cookie "XDEBUG_SESSION=PHPSTORM"
会触发XDebug。
通常,要从Chrome触发XDebug,您需要安装" XDebug Helper"。这让我得出结论,其中一个是" XDebug Helper"函数是添加一个将触发XDebug的cookie。
此问题的解决方案是向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");
}
希望这个解释会有所帮助!