目录

一、跨域请求

二、频率访问限制

一 、同一个域下的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. 面向对象设计模式纵横谈:Bridge 桥接模式(笔记记录)

    桥接模式是一个比较难理解的设计模式,设计和分析的时候也不容易把握,咱们听听“李建忠”老师是怎么来讲的.我们还是从演变的角度来说问题,一步一步的来把问题说清楚.先谈谈“抽象”和“实现”的关系. 抽象与实 ...

  2. [BAT]win7下用批处理脚本自动删除7天以前创建的文件

    set JmeterPath=D:\apache-jmeter-2.7 forfiles /p %JmeterPath%\extras /m *.html -d -7 /c "cmd /c ...

  3. IE8以下支持css3 border-radius渲染方法

    这两天在做个集团网站,web前端妹子技术水平不咋样,写个web和wap 真够费劲的,对之前流行的H5和css3 响应式看来不太会用,扔给我一个半成品~~·非说各种canvas和border-radiu ...

  4. 5 个关键点!优化你的 UI 原型设计

    当你和你的团队着手开始一个产品开发的时候,最开始的一步一般是绘制线框图,这是大部分产品项目的第一步,它不复杂但是却对整个产品的完成形态和质量有着至关重要的作用. 很多刚开始工作设计师或者产品经理都会提 ...

  5. highcharts点击事件系列

    http://www.highcharts.com/demo/line-ajax 参考设置(bar 柱状图) plotOptions: {                series: {       ...

  6. XAMPP Apache + MariaDB + PHP + Perl

    https://www.apachefriends.org/zh_cn/index.html 什么是XAMPP? XAMPP是最流行的PHP开发环境 XAMPP是完全免费且易于安装的Apache发行版 ...

  7. php-生成数据库设计文档

    在线以及提供下载数据库设计文档 $dbserver = "192.168.128.190:42578"; $dbusername = "root"; $dbpa ...

  8. [docker]mesos集群的启动脚本

    宿主机的IP地址列表 mesos-lb:192.168.253.159 mesos-marathon:192.168.253.159 mesos-master:192.168.253.159 meso ...

  9. vs2010点调试,显示系统找不到指定的文件

    首先,查看“项目”-“属性”-“链接器”-“常规”-“输出文件”,路劲是否是“bin/xxx.exe”,如果是请继续看我的解答,否则请忽略下面的内容.原因是用VS2010加载调试以前的VC6.0下的程 ...

  10. 做MFC的时候引用了头文件但VC还是报missing storage-class or type specifiers

    我在客户端clg.h头文件中引用了头文件“ClientSocket.h”,然后在客户端clg.h中的类中声明了类CClientSocket的对象,可是编译报错:d:\vc++\客户端\客户端dlg.h ...