zoukankan      html  css  js  c++  java
  • Django提供后台接口的跨域问题

    --> Django跨域

    当使用Django仅用来开发后端接口,为前端提供JSON数据的时候,不可避免的要接受前端的POST请求。虽然Django以其强大易用的特定使用很广泛,但在跨域问题上却让人很纠结。

    如果不做任何设置,Django会给所有POST请求返回一个403csrf,如下图

    csrf

    比较郁闷的是Django却没有提供一个开关式的针对特定URL打开或关闭CSRF过滤的功能。多次利用万能的搜索后,终于找到一个高人的解决方案,自定义CSRF中间件,用re进行特定URL匹配后忽略CSRF,Mark到此处,以作备忘。

    1.在settings.py文件同级目录下创建文件 helpers.py

     1 #FileName helpers.py
     2 
     3 import re
     4 class IgnoreCrsfMiddleware(object):
     5     def process_request(self, request, **karg):
     6         URL_LIST = [r'^/a/b/$', r'^/c/d/$']
     7         for u in URL_LIST:
     8             if re.match(u, request.path):
     9                 request.csrf_processing_done = True
    10                 return None

    2.在settings.py里添加新增的中间件

     1 ...
     2 MIDDLEWARE_CLASSES = (
     3     'helpers.IgnoreCrsfMiddleware',
     4     'django.middleware.common.CommonMiddleware',
     5     'django.contrib.sessions.middleware.SessionMiddleware',
     6     'django.middleware.csrf.CsrfViewMiddleware',
     7     'django.contrib.auth.middleware.AuthenticationMiddleware',
     8     'django.contrib.messages.middleware.MessageMiddleware',
     9 )
    10 '''

    这样之后,只要在helpers模块里的URL_LIST添加想忽略的URL模式即可。

  • 相关阅读:
    小白的Python之路_day1
    Vue---tab切换时不刷新
    Vue---第十五章使用VScode编写第一个脚本
    Vue---第十四章visual studio code使用
    Vue---第十三章基础运算和v-model
    Vue---第十二章批量下载模块
    vue---第十一章全局依赖环境区分
    Vue---第十章全局变量
    Vue---第九章NPM
    hadoop-Rpc使用实例
  • 原文地址:https://www.cnblogs.com/evilloop/p/3582466.html
Copyright © 2011-2022 走看看