Solicitud de origen cruzado bloqueada: la misma política de origen no permite leer el control remoto … Falta el encabezado CORS ‘Access-Control-Allow-Origin’

Tengo datos en http: // localhost: 3000 / edata

[{"_id":"598705ac8f79380367e0a7f2","name":"prasad","age":"28","gender":"male","phone":8790440944},{"_id":"598733508f79380367e0a7f8","name":"ravi","age":"27","gender":"male","phone":"9912881777"} 

Quiero que se obtengan estos datos cuando ejecuto mi aplicación cliente, es decir, http: // localhost: 4200

app.module.ts

  import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import {HttpModule} from "@angular/http"; import { AppComponent } from './app.component'; import {TasksComponent} from "../tasks/tasks.component"; import {TaskServices} from "./services/task.services"; @NgModule({ declarations: [AppComponent, TasksComponent], imports: [BrowserModule,HttpModule], providers: [TaskServices], bootstrap: [AppComponent,TasksComponent] }) export class AppModule { } 

task.component.ts

  import {Component, enableProdMode} from '@angular/core'; import {TaskServices} from "../app/services/task.services"; enableProdMode(); @Component({ selector: 'tasks', templateUrl: './tasks.component.html', styleUrls: ['./tasks.component.css'] }) export class TasksComponent { constructor(private taskServices:TaskServices){ this.taskServices.getTasks() .subscribe(tasks =>{ console.log(tasks); }); } title = 'app'; } 

task.services.ts

  import {Injectable} from '@angular/core'; import {Http, Headers} from "@angular/http"; import 'rxjs/add/operator/map'; @Injectable() export class TaskServices{ constructor(private http:Http){ console.log('Task service initialized....'); } getTasks(){ return this.http.get('http://localhost:3000/edata') .map(res => res.json()); } 

cuando ejecuto la aplicación, en la consola me aparece el error Solicitud de origen cruzado bloqueada: la misma política de origen no permite leer el recurso remoto en http: // localhost: 3000 / edata . (Motivo: falta el encabezado CORS ‘Access-Control-Allow-Origin’).

cómo corregir el error y cómo obtener datos del otro host … por favor, ayúdeme.

Si usa Node-server, agregue esto en su server.js

 app.use(function (req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); res.setHeader('Access-Control-Allow-Credentials', true); next(); }); 

y añade Hearders en tu método http

 return this.http.get( 'http://localhost:3000/edata',{ headers: {'Content-Type', undefined} /** Use Content-type as your requirement undifined OR application/json**/ }).map(res => res.json())