【问题标题】:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote ...............CORS header ‘Access-Control-Allow-Origin’ missing [duplicate]跨域请求被阻止:同源策略不允许读取远程 .............CORS 标头“Access-Control-Allow-Origin”缺失 [重复]
【发布时间】:2018-01-18 13:35:48
【问题描述】:

我在http://localhost:3000/edata有数据

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

我希望在运行客户端应用程序时获取这些数据,即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 { }

tasks.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());
  }

当我运行应用程序时,在控制台中我收到错误 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3000/edata。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。

如何修复错误以及如何从其他主机获取数据...请帮助我。

【问题讨论】:

  • 如何在我的代码中启用 cors,你的意思是在 app.js 文件中还是在哪个文件中?
  • 如果您在浏览器上测试它,那么将 Allow-Control-Allow-Origin 扩展添加到浏览器

标签: node.js angular cors


【解决方案1】:

如果使用 Node-server 在你的 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();
});

并在您的 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())

【讨论】:

  • 这有点复杂......如果你需要cookie,你不能使用'Access-Control-Allow-Origin' == '*' 你实际上必须指定真实的域名。详情见:agiletribe.wordpress.com/2015/08/17/…
  • 注意:如果您使用的是 localhost,则可能需要使用您的 IP 地址!
  • 我正在使用导轨。你知道解决办法是什么吗?
猜你喜欢
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2016-12-21
  • 2016-04-02
  • 2019-11-13
  • 1970-01-01
相关资源
最近更新 更多