Прежде всего. Пожалуйста, несите мои вопросы.
То, что я делаю, просто выполняет запрос ajax, который будет возвращать данные ответа строки.
Вот мой php
<?php header('Access-Control-Allow-Origin: *'); echo 'Peenoise Crazy'; ?>
Запрос Http
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); let options = new RequestOptions({ headers: headers }); return this.http.post('./app/parsers/peenoise.php', '', options) .then(val => console.log(val))
Это не работает. Но если я изменю URL-адрес на этот http://localhost:8912/app/parsers/peenoise.php
. Оно работает.
Вопросов
./app/parsers/peenoise.php
не работает? http://localhost:8912/app/parsers/peenoise.php
. Почему мне нужно поставить header('Access-Control-Allow-Origin: *')
? Он находится в той же папке моего приложения. http://localhost:8912/route/to/phpfolder.php
? Любая помощь будет оценена по достоинству. Пожалуйста, помогите мне. благодаря
Для публикации требуется полный или относительный URL-адрес. Вы можете использовать:
this.http.post('/parsers/peenoise.php', '', options)
Фактически Angular ищет бэкэнд-сервер для публикации данных, поэтому Imagine в вашем почтовом запросе выглядит как ниже
this.http.post('./app/parsers/peenoise.php', '', options).then(val => console.log(val))
Он попытается сделать запрос на отправку в местоположении, представляя, что вы выполняете угловой на локальном хосте: 4200
http://localhost:4200/app/parsers/peenoise.php
Теперь, чтобы ответить на ваши вопросы:
1) ./app/parsers/peenoise.php
не работает, потому что на самом деле пытается найти его из вашей внутренней службы
2) Вам нужно поставить header('Access-Control-Allow-Origin: *')
всякий раз, когда вы делаете http-запрос на другой сервер, чем тот, который использует ваш сайт, если вы не используете его В итоге вы получите Connection_refused_Error
.
3) Если вы хотите использовать только угловые, то есть mockAckends, in-memory-web-api
Пример использования mockBackEnd здесь