跨域问题

1、 跨域问题:

  跨域发生的原因(什么是跨域)?

  首先 跨域发生在前后端分离的项目中 ,前端静态资源服务器(服务器A) ,后端服务器(服务器B)

  在浏览器中 我们 在地址栏 输入服务器A 的域名 ,服务器A会返回 html ,css,js。代码  我们通过js访问  服务器B的资源 就会发生----跨域

  简述:服务器A的js通过 ajax访问服务器B下的资源 

  跨域的结果是什么?

  通过 js发送get请求 服务器B会接收请求 但不会返回结果 

  通过js发送post,put,patch,delete请求 服务器B     js内部会先发送一个options请求的试探 如果返回200OK 则会继续请求,否则则停止请求

  options请求简述: 跨域的一次预检,判断后端是否允许返回资源(服务器是默认拒绝的)

2、解决(django)

  options请求 需要服务器B的接口返回200OK 我们不太可能每一个接口都写一个 (冗余),so 封装 

  在django中 我们使用Cors来解决

  包名:django-cors-headers    github:https://github.com/adamchainz/django-cors-headers

  安装  : pip install django-cors-headers

  在settings 中 INSTALL_APPS=[ 'corsheaders']        ]

  在中间件中 设置  :corsheaders.middleware.CorsMiddleware  写在第一项

  添加白名单: (只有白名单中的地址 才可以访问服务器B的资源)

  CORS_ORIGIN_WHITELIST = (
      '127.0.0.1:8080',
      'localhost:8080',
  )  
  CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

      

原文地址:https://www.cnblogs.com/ZT-GJ/p/13573840.html