使用$ http从Angular App连接到Homebrew PHP / MySQL

时间:2015-02-03 23:05:09

标签: php angularjs xmlhttprequest cors

我正在我的开发机器上本地构建一个带有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-connect-php

gulp-webapp-running-browsersync-and-php

BrowserSync Proxies

该应用程序使用Gulps BrowserSync,它具有利用Express连接到已定义的中间件的代理选项,但我很难在哪里指出它或者它是否是正确的选项。

任何解释正确的方法都是很好的。我认为答案可能是我发现的结果,但实施是个问题。非常感谢。

1 个答案:

答案 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');