Я создаю Angular App с Gulp локально на моей машине разработчика, которая в конечном итоге станет SaaS. Все данные жестко закодированы в JSON в сервисе исключительно для того, чтобы интерфейс работал.
Теперь я готов подключиться к локальной базе данных и буду использовать PHP / MySQL.
У меня есть локальная среда разработки для установки OSX с Homebrew, которая имеет готовый PHP и MySQL.
Проблема:
Я получаю 404, когда использую url: 'db-insert.php'
строка независимо от того, где я положил файл db-insert.php в моей структуре каталогов.
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
• проглатывать-подключения-PHP
• проглатывать-WebAPP выполняющихся-browsersync-и-PHP
Приложение использует Gulps BrowserSync, у которого есть опция прокси, которая использует Express для подключения к определенному промежуточному программному обеспечению, но я не знаю, куда его направить, или это вообще правильный вариант.
Любое объяснение того, как правильно это сделать, было бы замечательно. Я думаю, что ответ, вероятно, является комбинацией того, что я нашел, но проблема заключается в реализации. Большое спасибо.
Хорошо, это оказалось проблемой файловой системы / CORS. Вот как я это решил:
1) Пройдите через сервер, чтобы попасть в php файл
http://127.0.0.1/dev/db-insert.php
НЕ
Файл: //myproject/dev/db-insert.php
Я пытался получить доступ к файлу напрямую в файловой системе, а не по его URL на сервере PHP, который я использую в качестве локального хоста. Когда я изменил 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');
Других решений пока нет …