目录

一、跨域请求

二、频率访问限制

一 、同一个域下的ajax请求访问 

url文件

from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r"^index/",views.index),
url(r"^books/",views.books),
]

  

views

from django.shortcuts import render,HttpResponse

# Create your views here.
def index(request):
return render(request,"index.html") def books(request): import json
book_list =["西游记","水浒传","金瓶"] return HttpResponse(json.dumps(book_list,ensure_ascii=False))

html index文件

<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script> </head>
<body> <button class="btn">click</button> <p>书籍列表:</p> <p class="book_list"></p>
<script>
$(".btn").click(function () {
$.ajax({
url:"/books/",
success:function (data) {
$(".book_list"
).append(data)
}

}) }) </script> </body>
</html>

结果为

第二个域的views文件为:

# Create your views here.
def books(request):
import json
book_list =["西游记","水浒传","金瓶"] HttpResponse(json.dumps(book_list,ensure_ascii=False))

 二、跨域访问

将 ajax的访问路径做更改

输出结果为:

解决办法 在第二个项目的view文件里做如下更改

# Create your views here.
def books(request):
import json
book_list =["西游记","水浒传","金瓶"] # return HttpResponse(json.dumps(book_list,ensure_ascii=False))
obj =HttpResponse(json.dumps(book_list,ensure_ascii=False))
obj["Access-Control-Allow-Origin"] ="http://127.0.0.1:8000"
return obj

打印结果:

 预检

ajax请求代码

二、频率访问限制

viewS文件

from django.shortcuts import render,HttpResponse

# Create your views here.
from app01 import models
from rest_framework.views import APIView
from rest_framework.serializers import ModelSerializer
from rest_framework.viewsets import ModelViewSet
from django.views import View # 序列化组件
class BookModelSerializers(ModelSerializer):
class Meta:
model =models.Book
fields ="__all__" class PublishModelSeralizers(ModelSerializer):
class Meta:
models=models.Publish
fields ="__all__" class AuthorModelSeralizers(ModelSerializer):
class Meta:
models =models.Author
fields ="__all__" # 频率访问组件
from rest_framework.throttling import BaseThrottle
class VisitThrottle(BaseThrottle):
def allow_request(self,request,view):
return False class BooksModeView(ModelViewSet): throttle_classes = [VisitThrottle]
queryset = models.Book.objects.all()
serializer_class = BookModelSerializers

  

案例 每隔10秒最多访问3次 

from django.shortcuts import render,HttpResponse

# Create your views here.
from app01 import models
from rest_framework.views import APIView
from rest_framework.serializers import ModelSerializer
from rest_framework.viewsets import ModelViewSet # 序列化组件
class BookModelSerializers(ModelSerializer):
class Meta:
model =models.Book
fields ="__all__" class PublishModelSeralizers(ModelSerializer):
class Meta:
models=models.Publish
fields ="__all__" class AuthorModelSeralizers(ModelSerializer):
class Meta:
models =models.Author
fields ="__all__" # 频率访问组件
from rest_framework.throttling import BaseThrottle VISIT_RECORD={}
class VisitThrottle(BaseThrottle): def __init__(self):
self.history =[] def allow_request(self,request,view):
remote_addr =request.META.get("REMOTE_ADDR")
print(remote_addr)
print(self.get_ident(request)) import time
ctime =time.time()
#IP 第一次访问
if remote_addr not in VISIT_RECORD:
VISIT_RECORD[remote_addr] = [ctime,]
return True #查去当前访问IP的访问历史记录
history =VISIT_RECORD.get(remote_addr)
self.history =history
print(self.history) if history and ctime - history[-1] > 10:
history.pop() if len(history)<3:
history.insert(0,ctime) #索引第一位开始插入
return True
else:
return False #显示剩余多少时间可以继续访问
def wait(self):
import time
ctime = time.time()
return 10 - (ctime - self.history[-1]) class BooksModeView(ModelViewSet): throttle_classes = [VisitThrottle,]
queryset = models.Book.objects.all()
serializer_class = BookModelSerializers

  

day103 跨域请求 与频率访问限制.的更多相关文章

  1. spring boot跨域请求访问配置以及spring security中配置失效的原理解析

    一.同源策略 同源策略[same origin policy]是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 什么是源 源[orig ...

  2. 本地主机作服务器解决AJAX跨域请求访问数据的方法

    近几天学到ajax,想测试一下ajax样例,由于之前在阿里租用的服务器过期了,于是想着让本地主机既做服务器又做客户端,只是简单地测试,应该还行. 于是,下载了xampp,下载网址http://www. ...

  3. Tornado—添加请求头允许跨域请求访问

    跨域请求访问 如果是前后端分离,那就肯定会遇到cros跨域请求难题,可以设置一个BaseHandler,然后继承即可. class BaseHandler(tornado.web.RequestHan ...

  4. nginx 跨域请求访问

    1.nginx跨域请求访问 location ~ .*\.(htm|html)$ { add_header Access-Control-Allow-Origin(请求域名) *(所有域名) http ...

  5. 解决前后端分离的“两次请求”引出的Web服务器跨域请求访问问题的解决方案

    在前后端分离的项目中,前端和后端可能是在不同的服务器上,也可以是Docker上,那就意味着前端请求后端Restful接口时,存在跨域情况. 后端在做了通用的跨域资源共享CORS设置后,前端在做ajax ...

  6. ajax跨域请求时,sessionId不一样,导致无法记住登陆状态

    遇到这样一个场景,就是前端的域是dev,请求接口时,接口的域是beta,即使在服务端设置了cookie存放的域,'COOKIE_DOMAIN'   =>  '.roboming.com',虽然c ...

  7. jQuery使用ajax跨域请求获取数据

    jQuery使用ajax跨域请求获取数据  跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的 ...

  8. 关于试用jquery的jsonp实现ajax跨域请求数据的问题

    我们在开发过程中遇到要获取另一个系统数据时,就造成跨域问题,这就是下文要说的解决办法: 先我们熟悉下json和jsonp的区别: 使用AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交 ...

  9. 【JavaScript】--重点解析之跨域请求

    JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON是用字符串来表示Javascript对象,例如可以在django中发送一个JSON格式 ...

随机推荐

  1. 14- Servlet.service() for servlet [mvc-dispatcher] in context with path [/collegeservice] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root caus

    有的service没有依赖注入:

  2. Gitlab不小心关闭了sign-in,无法登录web的坑。。。

    手贱一不小心用root在gitlab后台把登录功能给关了,当时我就懵逼了. 解决方法如下: #进入数据库修改配置[root@gitlab-server ~]# gitlab-psql gitlabhq ...

  3. iOS.Dev.Support.MultiVersions

    如何利用target conditionals和availabilty 如何来区分平台iOS OR Mac “When building for iOS the deployment target i ...

  4. arduino一些内容

    arduino 套件使用说明书V1.0.pdf, 步进电机 DHT11 传感器另外一脚要接A0 /* Web client This sketch connects to a website (htt ...

  5. LA 4670 Dominating Patterns (AC自动机)

    题意:给定n个字符串和一个文本串,查找哪个字符串出现的次数的最多. 析:一匹配多,很明显是AC自动机.只需要对原来的进行修改一下,就可以得到这个题的答案, 计算过程中,要更新次数,并且要映射字符串.如 ...

  6. Spring3.x错误---- Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.

    Spring3.x错误: 解决方法: 缺少cglib的包, 下载地址: http://sourceforge.net/projects/cglib/files/latest/download?sour ...

  7. 推荐:普通UI设计师与顶级UI设计师的区别是什么?(转)

    我不是顶级设计师(我甚至不知道什么才叫顶级),即使见过的一些顶级(知名or优秀)设计师也因为交流不深入,无法评价.但是我勉强可以回答优秀的设计师,和普通的设计师(其实我觉得大部分的普通设计师只是认识他 ...

  8. jmap的几个操作要慎用

    JDK中带有了一堆的工具是可以用来查看运行状况,排查问题的,但对于这些工具还是要比较清楚执行后会发生什么,否则有可能会因为执行了一个命令就导致严重故障,重点讲下影响比较大的jmap. 最主要的危险操作 ...

  9. 初探FFT(快速傅里叶变换)

    第一次接触省选的知识点呢!zrf大佬在课堂上讲的非常清楚,但由于本蒟蒻实在太菜了,直接掉线了.今天赶紧恶补一下. 那么这篇博客将分为两块,第一块是FFT的推导和实现,第二块则是FFT在OI上的应用 因 ...

  10. [redis]Redis Transaction

    https://github.com/phpredis/phpredis#transactions Transactions multi, exec, discard - Enter and exit ...