zoukankan      html  css  js  c++  java
  • CORS跨域资源共享

    一、名词概念

      1、XSS:跨站脚本攻击,是一种在web应用中的计算机安全漏洞,用户可以利用它将恶意代码植入到页面中。

      2、CSRF:跨站请求伪造,攻击者可以通过一些技术手段欺骗用户的浏览器去访问一个用户曾经认证过的网站并执行一些恶意操作。

      3、同源策略:浏览器的安全策略,发起请求的浏览器的url,与目标服务器的url,需要<域名,端口,协议>都相同,才可以称为同源。

      4、CORS:跨域资源共享,允许不同的源从服务器读取数据。

    二、简单请求与非简单请求

      1、简单请求,需要同时满足两个条件:

        ①请求方式是三者之一:<HEAD>,<GET>,<POST>。

        ②请求头只包含以下几种字段:<Accept>,<Accept-Language>,<Content-Language>,<Last-Event-ID>,<Content-Type>。

          - Content-Type只限于三个值:

            -- :application/x-www-form-urlencoded。

            -- :multipart/form-data。

            -- :text/plain。

      2、非简单请求:不满足简单请求条件就是非简单请求,非简单请求会发送两次,一次OPTIONS请求,一次真正的请求。

      3、如果用POST方式发送json格式的数据,即为非简单请求。

    三、后端开启CORS

      1、编写中间件,处理响应:

    from django.contrib.auth.middleware import MiddlewareMixin
    
    
    class NewCorsMiddle(MiddlewareMixin):
        def process_response(self, request, response):
            response['Access-Control-Allow-Origin'] = '*'
            if request.method == "OPTIONS":
                response["Access-Control-Allow-Headers"] = "*"
            return response

      2、配置中加入中间件:'xxx.xxx.NewCorsMiddle'。

    四、使用第三方中间件

      1、下载安装:pip install django-cors-headers。

      2、配置中注册app:'corsheaders'。

      3、配置中加入中间件:'corsheaders.middleware.CorsMiddleware'。

      4、配置中添加:

    CORS_ORIGIN_ALLOW_ALL = True
    CORS_ALLOW_METHODS = (
        'DELETE',
        'GET',
        'OPTIONS',
        'PATCH',
        'POST',
        'PUT',
        'VIEW',
    )
    CORS_ALLOW_HEADERS = (
        'authorization',
        'content-type',
    )

      

  • 相关阅读:
    ElasticSearch6学习(1)-安装Elasticsearch
    Ubuntu 18.04 安装java8
    windows10 php7安装mongodb 扩展
    https加密解密过程详解
    Beanstalkd,zeromq,rabbitmq的区别
    PHP中的++和--
    win10 git bash 闪退
    谈下WebSocket介绍,与Socket的区别
    Bridge桥接模式(结构型模式)
    Apater适配器模式(结构型模式)
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/13332856.html
Copyright © 2011-2022 走看看