[英]No 'Access-Control-Allow-Origin' on the localhost
我在Django和REST框架中擁有用於API服務的后端。 我正在嘗試使用cordova框架制作nativ應用。
我建立了一些服務:
var RegionService = function(){
var url;
this.initialize = function(){
url = "http://127.0.0.1:8000/api/regions/";
var deferred = $.Deferred();
deferred.resolve();
return deferred.promise();
}
this.List = function(){
return $.ajax({
type : "GET",
url : url
});
}
this.Get = function(id){
return $.ajax({
type : "GET",
url : url + id + "/"
});
}
}
並在index.js中
var regions = new RegionService();
regions.initialize().done(function() {
console.log("Regions initialized");
regions.List().done(function(data){
console.log("LIST");
console.log(data);
});
});
我正在通過瀏覽器平台測試cordova:cordova運行瀏覽器
當我運行此應用程序時,我進入瀏覽器的控制台:
Regions initialized
XMLHttpRequest cannot load http://127.0.0.1:8000/api/regions/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8001' is therefore not allowed access.
Django后端在127.0.0.1:8000和移動應用程序127.0.0.1:8001上運行
聽起來您需要在Django后端上啟用CORS(跨源資源共享)。 看看這個django應用程序: https : //github.com/ottoyiu/django-cors-headers/
該應用程序添加了在每個響應中添加CORS標頭的中間件,因此您不必更改任何視圖或django rest框架中的視圖。
pip install django-cors-headers
在您的settings.py中:
INSTALLED_APPS = (
...
'corsheaders',
...
)
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
CORS_ORIGIN_WHITELIST = (
'127.0.0.1:8001',
)
在本地進行開發時,您也可以嘗試以下設置: CORS_ORIGIN_ALLOW_ALL = True
以允許來自任何主機的跨站點請求。 但是,您不應該在任何非本地環境中執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.