【发布时间】:2017-03-16 18:08:30
【问题描述】:
我有一个使用 ionic2 和 Angularjs2 制作的移动应用。
我在本地主机上运行我的 Django,即http://127.0.0.1:8000/stocks/ 此 url 返回 JSON 数据,如下所示:
[
{
"id": 1,
"ticker": "FB",
"open": 7.0,
"close": 10.0,
"volume": 500
},
{
"id": 2,
"ticker": "AMZN",
"open": 125.05,
"close": 200.98,
"volume": 800
},
{
"id": 3,
"ticker": "MSFT",
"open": 1.25,
"close": 87.0,
"volume": 7000
}
]
我在我的应用程序中使用提供程序从 URL 获取数据
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class GetData {
public data:any;
constructor(public http: Http) {
console.log('Hello GetData Provider');
}
load(){
if (this.data) {
return Promise.resolve(this.data);
}
return new Promise(resolve => {
this.http.get('http://127.0.0.1:8000/stocks/')
.map(res => res.json())
.subscribe(data => {
this.data = data;
resolve(this.data);
});
});
}
}
我在页面中使用此提供程序来接收数据并显示
import { Component } from '@angular/core';
import {GetData} from '../../providers/get-data';
import { NavController } from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
public recvData:any;
constructor(public navCtrl: NavController, public getData: GetData) {
this.loadPeople();
}
loadPeople(){
this.getData.load()
.then(data => {
this.recvData = data;
});
console.log("the received data is >> ",this.recvData);
}
}
并像这样在我的 HTML 页面中使用它
<ion-content padding>
<ion-list>
<ion-item *ngFor='let stock of recvData'>
<p>stock.ticker</p>
</ion-item>
</ion-list>
</ion-content>
我收到了这个错误:
XMLHttpRequest cannot load http://127.0.0.1:8000/stocks/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.
main.js:43460EXCEPTION:响应状态为:0 对于 URL:null
【问题讨论】:
-
您的前端和后端在不同的端口上工作,这使得这是一个
Cross Origin请求。您应该在 django 中允许这种行为,因为默认情况下是不允许的。查看django-cors-middleware是否允许跨域请求。 -
谢谢先生...我刚刚使用了 CORS 扩展使其工作。我已经有了 CORS 扩展,但它被禁用了。我正在使用这个扩展chrome.google.com/webstore/detail/allow-control-allow-origi/…
-
您需要在变量 CORS_ORIGIN_WHITELIST=(
) 中传递准确的 url 才能使其工作。
标签: python django angular ionic-framework ionic2