我使用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