当前位置: 首页 > news >正文

公司网站开发建设免费流量网站推广

公司网站开发建设,免费流量网站推广,成都正规集团网站制作维护,域名检测工具【Django restframework】django跨域问题,解决PUT/PATCH/DELETE用ajax请求无法提交数据的问题 1 问题描述: 我用restframework(ModelSerializerGenericApiView)开发了一组符合RestFul接口标准的接口,这意味着它将支持客户端发来的GET、POST、…

【Django restframework】django跨域问题,解决PUT/PATCH/DELETE用ajax请求无法提交数据的问题


1 问题描述:

我用restframework(ModelSerializer+GenericApiView)开发了一组符合RestFul接口标准的接口,这意味着它将支持客户端发来的GET、POST、PATCH、PUT、DELETE请求,分别对某一资源进行获取、创建、部分修改、全部修改、删除操作。
在进行前后端联调的时候,我遇到了跨域问题:ccess to XMLHttpRequest at ‘http://127.0.0.1:8000/book/’ from origin ‘http://localhost:63342’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource
于是我使了用第三方库django-cors-headers,并在settings中做了一些配置。此时,GET、POST请求(简单请求)可以正常的提交与请求数据,但是PUT请求提示:net::ERR_CONNECTION_ABORTED,浏览器返回NetworkError: Failed to execute ‘send’ on ‘XMLHttpRequest’: Failed to load
在这里插入图片描述
我很困惑,并不清楚为什么跨域请求资源只允许提交GET/POST请求,因为之前我已在后端做好了一系列配置。这个问题困扰了我两天,期间我尝试了各种方法,包括自定义CORS中间件、重写ajax提交PUT请求的方式等,都没有解决PUT无法提交的问题。终于,我找到了一个办法,并且成功了。

我的服务器是Windows Server2016


2 解决办法:

2.1 解决方法综述

① 前端用POST请求替代PUT/DELETE,并且在header中定义`X-HTTP-Method-Override:PUT`
② 后端引入python第三方库`django-method-override`,它用于识别前端http请求header中的X-HTTP-Method-Override参数值,并将它与相应的视图对应起来。

2.2 解决方法实行

2.2.1 前端

前端我用的是jQuery ajax来发起PUT请求,我做了以下配置:

$.ajax({url: 'yourUrl',type: 'POST',   // 此处必须是POSTheaders: {'X-HTTP-Method-Override': 'PUT',  // 此处是实际的请求方式 对应后端视图可接受的请求方式'accept': 'application/json',  // 这也是必须的},data: JSON.stringify({'name': name,'mobile': mobile,'province': province,}),dataType: 'json',contentType: 'application/json',async: false,crossDomain: true,success: function (res) {// 成功的操作},error: function (res) {// 失败的操作}
})
2.2 后端的配置

第一步:安装django-method-override

pip install django-method-override

第二步:重写项目配置文件settings.py

INSTALLED_APPS = ['corsheaders','method_override',  # 新增的# ...
]MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware',# ...'django.middleware.csrf.CsrfViewMiddleware','method_override.middleware.MethodOverrideMiddleware',  # 新增method_override中间件,注意在CSRF之下# ...
]

第三步:重启项目
成功提交,并且成功的更新了数据库。
在这里插入图片描述


目前我只尝试了PUT请求,PATCH和DELETE还未用此法进行测试。如果有问题我将回来更新这篇文章,希望能对大家解决此问题提供一些思路。
PATCH也已经用这种方法试过了,没有问题,可以正常提交。

http://www.yayakq.cn/news/851294/

相关文章:

  • 织梦摄影网站模板html如何做购物网站
  • 网站建设管理专业介绍郑州做网站企起
  • 张家界商城网站开发设计自己做网站打开是乱码
  • 目前什么编码做网站最好物流网站建设策划书
  • 淘宝联盟推广网站建设贵州安顺网站建设
  • 建一个网站需要哪些人网站颜色搭配实例
  • 淘宝做推广网站定制软件公司
  • 政协网站建设情况汇报买机箱网站
  • 深圳找做网站室内装修设计软件用哪个好
  • 杭州高端品牌网站建设苏州最新情况最新消息今天
  • m 的手机网站怎么做开封旅游网站建设方案策划书
  • 网站建设包括哪些方面选择题杭州网络营销推广公司
  • 嘉兴做网站哪家好织梦cms安装网站程序
  • 做婚介网站可行性报告wordpress静态化好处
  • 网站建好了 怎么建后台昌平电子网站建设
  • 灯光设计网站推荐没有后台的网站怎么做排名
  • 江西有色建设集团有限公司网站乐清做网站公司哪家好
  • 二手房中介网站模板内江市住房和城乡建设局网站电话
  • 网站建设设计书苗木企业网站建设源代码 园林网站源码程序 苗圃花卉网站制作源码
  • wordpress toggle网站开发seo要求
  • 网站建设私人接单银州手机网站建设
  • 深圳建设监理协会网站站内推广的几种方式
  • 东阳市网站建设制作国外10条新闻简短
  • 茌平网站建设公司国外公共空间设计网站
  • 卖花网站模板购买了域名怎么使用
  • 公司注销预审在什么网站做四川省特种作业证查询
  • 织梦做的网站打包在dw修改德国的网站后缀
  • 网站维护怎么学创建百度网站
  • 会展官方网站建设公司手机版网站
  • ngrok做网站服务器免费seo网站推荐一下