Django跨域问题

在实际项目实际开发过程中遇到了跨域的问题
此处解决跨域请求以及ajax请求无法设置cookie的问题

  • 解决跨域

    • 安装django-cors-headers
      pip install django-cors-headers
    • 配置setting.py
      • INSTALLED_APPS中添加corsheaders
      • MIDDLEWARE 中添加 corsheaders.middleware.CorsMiddleware
      • 最后添加一个新行, 作用时添加跨域白名单
        1
        2
        3
        4
        5
        CORS_ORIGIN_WHITELIST = (
        '127.0.0.1:8020',
        'localhost:8080',
        )
        CORS_ALLOW_CREDENTIALS = True
  • 解决跨域设置cookie问题

    • 在ajax请求中添加 xhr.withCredentials = true (xhr为实例化的对象)
    • 此处需要说明, 以上添加的代码先前条件是服务器会返回 Access-Control-Allow-Credentialstrue,
      这里因为我们已经设置过了 CORS_ALLOW_CREDENTIALS = True 所以不用再担心
    • jQuery的ajax请求中设置为 xhrFields: {withCredentials: true}