CORS 策略:离子 2 中请求的资源上不存在 'Access-Control-Allow-Origin' header
CORS Policy : No 'Access-Control-Allow-Origin' header is present on the requested resource in ionic 2
编辑:
我是 hybrid 的新手 development.I 提到这个 Sample 使用 ionic2 在列表视图中解析 json。但是当我 运行 代码时,我在浏览器中只能看到空白屏幕。
下面我贴出了代码。请检查:
pages.ts:
import { Component } from '@angular/core';
import {Http} from '@angular/http';
import { NavController } from 'ionic-angular';
import 'rxjs/add/operator/toPromise';
@Component({
selector: 'page-home',
templateUrl: 'pages.html'
})
export class SlidingPage {
public items:any;
constructor(public navCtrl: NavController,public http: Http) {
this.http = http;
this.http.get("http://api.randomuser.me/?results=10")
.subscribe(data =>{
// console.log(data['_body']);
// this.items=JSON.parse(data['_body']).results;//Bind data to items object
this.items = data.json();
},error=>{
console.log(error);// Error getting the data
} );
}
buttonClick(event){
console.log("button clicked");
console.log(event);
}
itemClicked(event,itemData){
console.log("item clicked");
console.log(event);
console.log(itemData);
}
}
Pages.html:
<ion-header>
<ion-navbar>
<ion-title>
List View
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<ion-list>
<ion-item *ngFor="let item of items" (click)="itemClicked($event,item)">
<ion-avatar item-left>
<img src="{{item.picture.thumbnail}}">
</ion-avatar>
<h2>{{item.name.first | uppercase }}</h2>
<h3>{{item.gender}}</h3>
<ion-icon *ngIf="item.gender=='female'" name="woman" item-left></ion-icon>
<ion-icon *ngIf="item.gender=='male'" name="man" item-left></ion-icon>
<ion-icon name="heart" item-right></ion-icon>
<button ion-button item-right color="danger" (click)="buttonClick($event)">Button</button>
</ion-item>
</ion-list>
</ion-content>
我在 控制台 中遇到了这个问题:
localhost/:1 XMLHttpRequest cannot load http://api.randomuser.me/?results=10. Redirect from 'http://api.randomuser.me/?results=10' to 'https://api.randomuser.me/?results=10' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.
感谢任何帮助。
我认为这会起作用:
this.http.get("http://api.randomuser.me/?results=10")
.map(res => res.json())
.subscribe(data => {
this.items = data;
console.log("Data is:",data,this.items);
},error=>{
console.log(error);// Error getting the data
});
我将此 Allow Control Allow origin 引用为 chrome 扩展名。然后我按照以下步骤操作:
- 在 chrome 浏览器中,设置 -> 扩展 -> 向下滚动并单击
获取更多扩展。
在 chrome 网上商店中搜索 Allow origin allow control 并将其添加到浏览器。
然后开启启用跨源资源。
编辑:
我是 hybrid 的新手 development.I 提到这个 Sample 使用 ionic2 在列表视图中解析 json。但是当我 运行 代码时,我在浏览器中只能看到空白屏幕。
下面我贴出了代码。请检查:
pages.ts:
import { Component } from '@angular/core';
import {Http} from '@angular/http';
import { NavController } from 'ionic-angular';
import 'rxjs/add/operator/toPromise';
@Component({
selector: 'page-home',
templateUrl: 'pages.html'
})
export class SlidingPage {
public items:any;
constructor(public navCtrl: NavController,public http: Http) {
this.http = http;
this.http.get("http://api.randomuser.me/?results=10")
.subscribe(data =>{
// console.log(data['_body']);
// this.items=JSON.parse(data['_body']).results;//Bind data to items object
this.items = data.json();
},error=>{
console.log(error);// Error getting the data
} );
}
buttonClick(event){
console.log("button clicked");
console.log(event);
}
itemClicked(event,itemData){
console.log("item clicked");
console.log(event);
console.log(itemData);
}
}
Pages.html:
<ion-header>
<ion-navbar>
<ion-title>
List View
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<ion-list>
<ion-item *ngFor="let item of items" (click)="itemClicked($event,item)">
<ion-avatar item-left>
<img src="{{item.picture.thumbnail}}">
</ion-avatar>
<h2>{{item.name.first | uppercase }}</h2>
<h3>{{item.gender}}</h3>
<ion-icon *ngIf="item.gender=='female'" name="woman" item-left></ion-icon>
<ion-icon *ngIf="item.gender=='male'" name="man" item-left></ion-icon>
<ion-icon name="heart" item-right></ion-icon>
<button ion-button item-right color="danger" (click)="buttonClick($event)">Button</button>
</ion-item>
</ion-list>
</ion-content>
我在 控制台 中遇到了这个问题:
localhost/:1 XMLHttpRequest cannot load http://api.randomuser.me/?results=10. Redirect from 'http://api.randomuser.me/?results=10' to 'https://api.randomuser.me/?results=10' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.
感谢任何帮助。
我认为这会起作用:
this.http.get("http://api.randomuser.me/?results=10")
.map(res => res.json())
.subscribe(data => {
this.items = data;
console.log("Data is:",data,this.items);
},error=>{
console.log(error);// Error getting the data
});
我将此 Allow Control Allow origin 引用为 chrome 扩展名。然后我按照以下步骤操作:
- 在 chrome 浏览器中,设置 -> 扩展 -> 向下滚动并单击 获取更多扩展。
在 chrome 网上商店中搜索 Allow origin allow control 并将其添加到浏览器。
然后开启启用跨源资源。