Замешательство в Angular 2 Http Post Request

Прежде всего. Пожалуйста, несите мои вопросы.

То, что я делаю, просто выполняет запрос 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 . Оно работает.

Вопросов

  1. Почему ./app/parsers/peenoise.php не работает?
  2. Если я изменил URL-адрес на http://localhost:8912/app/parsers/peenoise.php . Почему мне нужно поставить header('Access-Control-Allow-Origin: *') ? Он находится в той же папке моего приложения.
  3. Как использовать http.post без передачи URL-адреса 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 здесь