我正在我的开发机器上本地构建一个带有Gulp的Angular应用程序,最终将成为一个SaaS。所有数据都是硬件编码的JSON服务,纯粹是为了让前端工作。
现在我已准备好连接到本地数据库并将使用PHP / MySQL。 我在HomeXrew的OSX设置上有一个本地开发环境,可以随时使用PHP和MySQL。
问题:
无论我把db-insert.php文件放在我的目录结构中的什么位置,当我使用url: 'db-insert.php'
行时,我得到404。
POST http://localhost:3000/db-insert.php 404 (Not Found)
var request = $http({
method: 'post',
url: 'db-insert.php',
data: {
name: $scope.name,
email: $scope.email,
message: $scope.message
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
我已经调查了
•CORS:尝试open -a 'Google Chrome' --args -allow-file-access-from-files
•gulp-webapp-running-browsersync-and-php
该应用程序使用Gulps BrowserSync,它具有利用Express连接到已定义的中间件的代理选项,但我很难在哪里指出它或者它是否是正确的选项。
任何解释正确的方法都是很好的。我认为答案可能是我发现的结果,但实施是个问题。非常感谢。
答案 0 :(得分:0)
好的,结果证明这是一个文件系统/ CORS问题。以下是我解决它的方法:
1)浏览服务器以获取php文件
http://127.0.0.1/dev/db-insert.php
不会强>
文件://myproject/dev/db-insert.php
我试图直接在文件系统中访问该文件,而不是在我作为localhost运行的PHP服务器上的URL。当我更改url以通过apache服务器查找文件时,它就能找到它。
2)一旦我到达文件,我就遇到了CORS问题
将下面的代码添加到db-insert.php的顶部执行允许访问该文件。然后服务器可以执行代码。
header('Access-Control-Allow-Origin: '. $_SERVER['HTTP_ORIGIN'] );
header('Access-Control-Allow-Credentials: true' );
header('Access-Control-Request-Method: *');
header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: *,x-requested-with,Content-Type');
header('X-Frame-Options: DENY');