1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

处理Djangocors跨域问题

同源策略

同源策略/SOP(Sameoriginpolicy)是一种保护措施,于1995年由Netscape公司引进电脑浏览器,目前所有JavaScript浏览器都使用这种安全措施。同源指的是“协议+网站域名+服务器端口”三者相同,即使两个不同的域名指向同一个IP地址,也不属于同源。源表示协议、网站域名和服务器端口。

处理Djangocors跨域问题

处理跨域问题 – 在Django中

在Django中,要处理跨域问题,可以按以下步骤进行。

安装第三方库django-cors-headers

为了解决Django的跨域问题,首先需要安装第三方库django-cors-headers。

在settings.py中进行配置

在settings.py中添加“corsheaders.middleware.CorsMiddleware”,在SessionMiddleware和CommonMiddleware中间,并在INSTALLED_APPS里添加“corsheaders”。在中间件中再添加“corsheaders.middleware.CorsMiddleware”和“django.middleware.common.CommonMiddleware”。下面是一个设置示例:

INSTALLED_APPS=[
    'search.apps.SearchConfig',
    'data.apps.DataConfig',
    'record_data.apps.RecordDataConfig',
    'deleted_data.apps.DeletedDataConfig',
    'mgmt.apps.MgmtConfig',
    'c_test.apps.CTestConfig',
    'rest_framework',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',#新增
]
MIDDLEWARE=[
    # 'utils.middleware.ExceptionMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',#新增/必须在common中间件上面
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ALLOW_CREDENTIALS=True#允许携带cookie
CORS_ORIGIN_ALLOW_ALL=True#放行所有
CORS_ORIGIN_WHITELIST=('*',)#白名单
CORS_ALLOW_METHODS=(
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
)
CORS_ALLOW_HEADERS=(
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

自定义中间件并在其中处理跨域问题

除了使用django-cors-headers库之外,还可以自己编写中间件,并在其中处理跨域问题,具体步骤如下:

  1. 注册一个中间件
  2. 在中间件process_response方法中对response进行封装
def process_response(self, request, response):
    response["Content-Type"]="application/json"
    response["Access-Control-Allow-Origin"]="*"#允许跨域请求的源地址,*表示:允许所有地址
    response["Access-Control-Allow-Methods"]="POST,GET,OPTIONS"#允许跨域请求的具体方法
    response["Access-Control-Max-Age"]="1000"#用来指定本次预检请求的有效期,单位为秒,,在此期间不用发出另一条预检请求。
    response["Access-Control-Allow-Headers"]="*"
    return response

处理跨域请求的步骤

跨域请求的处理步骤如下:

  1. 浏览器发送options请求
  2. 服务器在响应中返回许可信息
  3. 浏览器发送post请求

以上就是处理跨域问题的方法,希望对大家有所帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5773.html