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

  • 相关阅读:
    MDX语法
    BI
    Lucene
    并行开发
    12 个最佳的免费网络监控工具
    ASP.NET 在IIS7.5下自定义404错误页面的方法
    MSBuild和Jenkins搭建持续集成环境
    MVC View显示详解(RenderBody,RenderPage,RenderSection,Partial)
    PDFsharp Samples
    C#获取程序集自动增加的版本号和编译时间
  • 原文地址:https://www.cnblogs.com/evilloop/p/3582466.html
Copyright © 2011-2022 走看看