我使用Django的REST框架,在JSON提供的数据和使用它们通过AJAX刷新页面。如何保护页面正在用数据更新的URL并且没有人可以访问API网址。网址是可见的AJAX在HTML,所以它可以被访问,但我想,以防止它通过只访问它的网站具有令牌或其他任何适当的身份验证。如何在Django通过AJAX设置令牌认证,以确保API网址
的URL为 '/ API /项目/'(参见AJAX代码)
serializers.py
from rest_framework import serializers
from .models import Item
class ItemModelSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = [
'title',
'value',
]
views.py(在API)
from rest_framework import generics
from .serializers import ItemModelSerializer
from .models import Item
class ItemListAPIView(generics.ListAPIView):
serializer_class = ItemModelSerializer
def get_queryset(self):
return Item.objects.all().order_by('sort')
网址.py
urlpatterns = [
#...urls...
url(r'^api/item/', include('apps.item.api.urls', namespace='api-item')),
url(r'^admin/', admin.site.urls),
]
template - ajax
setInterval(function() {
$.ajax({
method: "GET",
url: "/api/item/",
success: function(data) {
$("#items tbody").empty();
$.each(data, function (key, value) {
var itemKey = key;
var itemTitle = value.title;
var itemValue = value.value;
$("#items tbody").append(
"<tr><td class='left'>" + itemTitle + "</td><td>" + itemValue</td></tr>"
)
})
},
error: function(data) {
console.log("error")
console.log(data)
}
})
}, 3000)
“如果要直接打电话给你的API没有权威性API,你将不得不使用硬编码的令牌Django和AJAX之间共享但它是不安全遵循这样的做法。” - 这是我的恰恰是点 - 如何在Django,AJAX安全的GET请求,JS只有该网站可以使用它没有其他人? – Radek