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模式即可。

  • 相关阅读:
    通过ida dump Uinity3D的加密dll
    apk文件签名绕过
    防止apk反编译的技术分析浅谈--内存修改器篇
    OD脚本指令集
    RHEL6.4 xclock安装小记
    PyCharm配置SFTP远程调试Django应用
    git常用命令
    centos7下yum安装mysql
    慢吞吞的pip切换源
    Linux常用软件安装与配置——目录
  • 原文地址:https://www.cnblogs.com/evilloop/p/3582466.html
Copyright © 2011-2022 走看看