碰到了两个问题

碰到了两个问题

  1. 没有跨域问题的时候,post请求django端一直报找不到路径,

  2. 后来再调整(没什么调整看着),就开始get请求没有跨域问题,post请求就存在跨域问题:

    https://img1.sycdn.imooc.com//climg/6217a1460933c8d107480438.jpg

  3. post

    https://img1.sycdn.imooc.com//climg/6217a170090b3d9508840442.jpghttps://img1.sycdn.imooc.com//climg/6217a19f097a677a25400362.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕燕燕 2022-02-25 10:57:53

同学,你好!

1、没有跨域问题时,post请求django端找不到路径,检查一下Django项目的urls.py文件中是否配置了login相关的路径

2、post请求时,错误信息提示"请求头Content-Type字段不被Access-Control-Allow-Headers允许",解决方法:发送post请求时为请求头设置Content-Type类型

https://img1.sycdn.imooc.com//climg/621844950908aa7207870199.jpg

3、另外,还有一处错误提示,ajax.js第31行,提示没有定义statu,正确写法为status

祝:学习愉快!

  • 提问者 嗯哼5071141 #1

    老师:针对vue的web项目,我用的axios来发送post请求,在vue里怎么设置全局的csrf呀,vue设置后,django里面还需要设置么,这里设置好像不行

    xport const ajax=axios.create({

    headers:{

    source:'h5',

    'Content-Type':'application/json',

    'X-CSRFtoken':csrf_token(),

    },

    // transformRequest:function(data,headers){

    //     return qs.stringify(data)

    // },

    // 携带上次使用的cookies

    withCredentials:true,

    timeout : 5000


    }

    )


    2022-02-25 15:46:48
  • 好帮手慕燕燕 回复 提问者 嗯哼5071141 #2

    同学,你好!Django也需要对csrf_token进行处理,axios可以先通过get方法获取csrf_token的值,然后缓存起来,之后每次发起post请求时,将获取到的csrf_token值携带上,可参考以下代码

    1、在django中创建一个获取csrf_token的视图函数

    from django.middleware.csrf import get_token
    def get_csrf_token(request):
        csrf_token = get_token(request)  # 获取csrf_token的值
        return json_response(data={'token': csrf_token})

    2、前端先通过get的方式把csrf_token获取到,缓存起来,然后再发送post请求

    import axios from 'axios'
    
    // 获取csrf_token
    axios.get('/api/home/token/').then(res => {
      const csrftoken = res.data.data.token
      window.sessionStorage.setItem('csrf_token', csrftoken)
    })
    
    // post请求,配置请求头
    axios({
      url: '/api/auth/login/',
      method: 'post',
      data: {
        username: xxx,
        passwd: xxx
      },
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'X-CSRFToken': window.sessionStorage.getItem('csrf_token')
      }
    })

    祝:学习愉快!

    2022-02-25 17:31:13
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师