跨域问题

跨域问题

同源策略

就是请求的url地址,必须与浏览器上的url地址一致,就是域名和带你看,协议都相同
这样是为了保护用户信息安全的一种机制,不同源的客户脚本在没用得到服务端的明确授权的情况下,浏览器会拒绝服务端的信息提供前端ajax

只要在在客户端请求地址出现这样的情况就是同源策略的拦截问题

Access-Control-Allow-Origin

这个关键字,就是访问受限

但是cors请求分成两类:简单请求和非简单请求

  • 简单请求要满足下面的两个条件,就是简单请求

    请求方法是以下三种方法之一
          HEAD
          GET
          POST
     http的头信息不超过一下几种字段
    		Accept
            Accept-Language
            Content-Language
            Last-Event-ID
            Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
    

    注意

    如果发送post请求,数据格式是json---> 非简单请求,非简单请求发送,一次options请求,一次正真的请求

    后端处理,开启cors,跨云资源共享

    第一种:

    class MyMiddle(MiddlewareMixin):
        def process_response(self, request, response):
            response['Access-Control-Allow-Origin'] = '*'
            if request.method == "OPTIONS":
                # 可以加*
                response["Access-Control-Allow-Headers"] = "Content-Type"
                response["Access-Control-Allow-Headers"] = "authorization"
    
            return response
    

第二种:在settings中间件中配置

第三种:

-pip install django-cors-headers
-注册app:'corsheaders',
-配置中间件:corsheaders.middleware.CorsMiddleware
-setting中配置:
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
	'DELETE',
	'GET',
	'OPTIONS',
	'PATCH',
	'POST',
	'PUT',
	'VIEW',
)
CORS_ALLOW_HEADERS = (
	'authorization',
	'content-type',
)

posted @ 2020-07-19 23:49  小子,你摊上事了  阅读(82)  评论(0编辑  收藏  举报