我正在尝试使用以下服务从角度使用django-rest-framework访问django服务器:
myapp.factory("GetData", ["$resource",function($resource) {
return $resource(
"http://local/path/**/users/:username/",
{},
{
"query": {
method: "GET",
isArray: true,
headers:{
"Content-Type":"application/json"
}
}
},
{
stripTrailingSlashes:false
}
);
}]);
当我把URL放在浏览器中时,我得到了所需的输出,但问题是当我尝试通过Angular访问时,在我的控制台中我得到403禁止错误。任何人都可以向我解释导致这种情况的原因。以及如何解决这个问题。
我的url.py看起来如下:
from rest_framework.routers import DefaultRouter
from .views import UserViewSet
router = DefaultRouter()
router.register(prefix='users', viewset=UserViewSet)
urlpatterns = router.urls
我的views.py文件如下:
from django.shortcuts import render
from django.http import HttpResponse
from rest_framework import viewsets
from .models import users
from .serializers import UserSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = users.objects.all()
serializer_class = UserSerializer
答案 0 :(得分:0)
我认为403禁止进入浏览器阻止跨源请求。 您需要通过设置适当的标头在API服务器上启用允许CORS。
您可以查找https://github.com/ottoyiu/django-cors-headers
为此,您需要添加已安装的应用。
'corsheaders'
然后开始测试它。检查文档中的微调设置。
CORS_ORIGIN_ALLOW_ALL = True
修改
您还需要在中间件中添加它。
'corsheaders.middleware.CorsMiddleware',
答案 1 :(得分:0)
我设法通过结合@Bipul Jain建议的https://stackoverflow.com/a/42044910/7210105(上图)并在我的$资源中更改此链接来解决问题
“http://local/path/ ** /用户/:用户名/”
我从链接中删除了 http://local/path ,403 forbidden错误消失了。