1. 程式人生 > >在 Django2.0 中完美解決跨域請求的問題

在 Django2.0 中完美解決跨域請求的問題

一、前言

Django 1.x 版本修改一些配置的名稱,如:

版本 settings.py 中介軟體名稱
2.x MIDDLEWARE
1.x MIDDLEWARE_CLASSES

設定跨域請求的時候要注意

域名,協議,埠不同。瀏覽器執行javascript指令碼時,不會被執行。

二、操作


操作前
這裡寫圖片描述

1.安裝 django-cors-headers
django-cors-headers

2.修改 setting.py

INSTALLED_APPS = [
    ...
    'corsheaders'
... ] # 新增中介軟體 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware',# 預設 'django.contrib.sessions.middleware.SessionMiddleware', # 預設 'corsheaders.middleware.CorsMiddleware',# 預設 # 注意順序,即在上一個的下面 'django.middleware.common.CommonMiddleware', # 新增 ✔ 'django.middleware.csrf.CsrfViewMiddleware'
,# 預設 'django.contrib.auth.middleware.AuthenticationMiddleware',# 預設 'django.contrib.messages.middleware.MessageMiddleware', # 預設 'django.middleware.clickjacking.XFrameOptionsMiddleware',# 預設 'django.middleware.common.CommonMiddleware',# 預設 ] # 跨域增加忽略 CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_ALLOW_ALL = True CORS_ORIGIN_WHITELIST = ( '*'
) CORS_ALLOW_METHODS = ( 'DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'VIEW', ) CORS_ALLOW_HEADERS = ( 'XMLHttpRequest', 'X_FILENAME', 'accept-encoding', 'authorization', 'content-type', 'dnt', 'origin', 'user-agent', 'x-csrftoken', 'x-requested-with', ) #部署到雲服務上必備 ALLOWED_HOSTS = ['*']

操作後
這裡寫圖片描述

三、其他

本例 ajax 請求示例程式碼

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <script src="js/jquery-1.7.2.js"></script>
    <script type="text/javascript">
        function upd() {
            $.ajax({
                type: "GET",
                data: "a=1",
                url: "http://127.0.0.1:8000/books/?format=json",
                success: function(result) {
                    console.log(result);
                    //alert(result)
                }
            });
        }
    </script>
    <body>
        <!--獲取-->
        <button id="btn2" onclick="upd()">Get request 獲取</button>
    </body>

</html>

四、參考文章