提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是跨域请求?

当我们使用前端通过浏览器对后台接口发起请求的时候,浏览器判断我们的请求的目标接口所在主机和本机的协议、域名(ip)、端口号是否相同,当三者有一个不同时,发生请求跨域错误这就是我们所说的请求跨域问题。

ajax请求参考这里原生ajax请求流程_starhjc的博客-CSDN博客提示:以下是本篇文章正文内容,下面案例可供参考一、ajax是什么?ajax可以与后台服务器进行数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。二. 使用步骤1.实例化请求对象 var http=new XMLHttpRequest ();2.建立服务器链接http.open('POST', 'http://127.0.0.1:8000/', true);3.监听服务器响应 http.onread...https://blog.csdn.net/hjc000712/article/details/124562474?spm=1001.2014.3001.5502

二、解决步骤

1.下载库

pip install django-cors-headers

2.配置settings.py文件

INSTALLED_APPS = [...'corsheaders',...] # 添加中间件
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware',# 默认'django.contrib.sessions.middleware.SessionMiddleware', # 默认'corsheaders.middleware.CorsMiddleware',# 默认# 注意顺序,即在上一个的下面'django.middleware.common.CommonMiddleware', # 新增 ✔'django.middleware.csrf.CsrfViewMiddleware',# 默认'django.contrib.auth.middleware.AuthenticationMiddleware',# 默认'django.contrib.messages.middleware.MessageMiddleware', # 默认'django.middleware.clickjacking.XFrameOptionsMiddleware',# 默认'django.middleware.common.CommonMiddleware',# 默认
]# 跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = TrueCORS_ALLOW_METHODS = ('DELETE','GET','OPTIONS','PATCH','POST','PUT','VIEW',
)CORS_ALLOW_HEADERS = ('XMLHttpRequest','X_FILENAME','accept-encoding','authorization','content-type','dnt','origin','user-agent','x-csrftoken','x-requested-with','Pragma',
)

三,细节问题

1,POST请求

如果对Django请求的是post请求,由于Django的csrf的中间件问题,我们需要关闭调中间件,操作如下。

from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_exempt# Create your views here.
@csrf_exempt
def index(request):data = {'readyState': 4, 'status': 200, 'content': 'ajax请求成功'}return JsonResponse(data)

2,中文二进制的解决

1, 如果我们就这样返回json数据,可以看到中文汉字是十六进制


2, 我们点击JsonResponse源码分析

JsonResponse底层也是利用了json.dumps, 故可以传入一个字典进行设置    json_dumps_params={'ensure_ascii': False}, 完整代码如下
from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_exempt# Create your views here.
@csrf_exempt
def index(request):data = {'readyState': 4, 'status': 200, 'content': 'ajax请求成功'}return JsonResponse(data, json_dumps_params={'ensure_ascii': False})

3,结果 如下

可以看到中文显示成功

总结

ajax请求是比较重要内容,本文仅仅简单介绍了ajax的使用,而Django可以配置跨域请求,能使我们快速便捷地处理数据请求的问题。

Django解决ajax跨域请求问题相关推荐

  1. 用iframe设置代理解决ajax跨域请求问题

    用iframe设置代理解决ajax跨域请求问题 参考文章: (1)用iframe设置代理解决ajax跨域请求问题 (2)https://www.cnblogs.com/ranzige/p/370965 ...

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

    本地主机作服务器解决AJAX跨域请求访问数据的方法 参考文章: (1)本地主机作服务器解决AJAX跨域请求访问数据的方法 (2)https://www.cnblogs.com/QiScript/p/5 ...

  3. ajax error parsererror,完美解决ajax跨域请求下parsererror的错误

    AJAX 的 完美解决ajax跨域请求下parsererror的错误 ajax请求报parsererror错误是很宽泛的概念,很多情况下都报这个错, 在很多时候,即使ajax提交.返回都正常 XMLH ...

  4. js请求结果拦截机器_js利用jquery的jsonp来解决ajax跨域请求被浏览器拦截结果的问题...

    先来个表.页面太多对不起我也不知道这张表是从哪个博客保存过来的,所以无法注明博客地址.非常抱歉.URL说明是否允许通信 http://www.a.com/a.jshttp://www.a.com/b. ...

  5. Spring Boot学习总结(6)——SpringBoot解决ajax跨域请求问题的配置

    ajax是一种创建交互式网页应用的网页开发技术,是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换.而ajax的跨域问题则是请求了其他项目的接口地址,当协议.子域名.主域名.端口号中 ...

  6. jQuery利用JSONP解决AJAX跨域请求

    出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即"同源策略".而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通信的效果. JSON(Ja ...

  7. PHP后端API接口解决Ajax跨域请求的方式

    如果我们是前后端分离,且不再同一域的情况下,前端使用Ajax请求后端的数据的时候,就会出现跨域的问题. 在前端我们可以使用获取jsonp格式来应对跨域问题,但是这种方式比较难用,如果前端后端都是可以进 ...

  8. ajax跨域请求时 会出现什么问题,在用AJAX跨域请求时遇到的问题

    刚刚接触ajax就遇到一个词--跨域. 在我百度了各种资料以后总结了一句话:"只要不是在一个协议.域.名端口下,都属于跨域(127.0.0.1本地也属于跨域)". 在做ajax请求 ...

  9. ajax跨域请求Jsonp实现,使用jsonp实现ajax跨域请求

    Jsonp(JSON with Padding)是资料格式 json 的一种"使用模式",可以让网页从别的网域获取资料. 由于同源策略,一般来说位于 server1.example ...

最新文章

  1. 【Python入门】Python字符串的45个方法详解
  2. linux的网络配置
  3. keyshot环境素材文件_快速学会keyshot基础渲染的步骤
  4. 用FoxitPDFReader打开消除PDF中文乱码
  5. Qt编译错误“GL/gl.h:No such file or directory”的解决方法
  6. zemax中如何和matlab中通信,如何在Zemax与Matlab间通信
  7. mysql insert嵌套select_mysql之UPDATE,SELECT,INSERT语法
  8. 微信公众号申请所需材料汇总
  9. 外星人入侵游戏python学习心得——创建第一个外星人在左上角
  10. 电子稳定程序系统--ESP
  11. android qq截屏快捷键是什么,手机截屏的快捷键是什么,超过3种截图的快捷键操作方法!...
  12. win11任务管理器怎么打开?win11任务管理器打开的技巧方法
  13. 服务器运维是什么意思?日常工作包含哪些?
  14. 【Python】有红、黄、绿三种颜色的球,编程计算摸出球的各种颜色搭配
  15. Steering Behaviors
  16. 只有年轻人才能做数据分析师吗?
  17. Python学习笔记:个税起征点上调至5000,算一算少交多少税?
  18. 普通人“微创业”实例
  19. vue-router之addRoutes(动态路由/权限路由)使用分析
  20. 微型计算机总线的标准有哪些,微机中总线标准有哪些

热门文章

  1. 2022天梯赛 L1-083 谁能进图书馆
  2. android java 怎么更换默认铃声,Android如何通过长按按钮将声音设置为铃声
  3. 基于Java毕业设计新生报到管理源码+系统+mysql+lw文档+部署软件
  4. RMXP脚本解析(十):Game_Battler(分割定义一)
  5. opencv从内存缓冲区中读取图像数据
  6. 开源项目的可持续性盈利模式
  7. composer安装laravel8
  8. TechSmith Snagit for mac(最强大的屏幕截图软件)
  9. acwing第72场周赛题解
  10. 各种短视频素材,一网打尽,新手小白抓紧收藏,做起来能事半功倍