【Django】配置本地域名、解决前后端跨域问题

由于开发需求,我们可能会需要使用特定域名访问项目,但是当前又不方便直接上线,所以我们可以使用本地域名的方式访问,我们只需要在hosts文件里添加域名和ip即可

1.Linux

如果使用的是Linux系统,我们打开/etc/hosts文件

# 打开hosts文件
sudo  vim  /etc/hosts


# 增加ip和域名: 
127.0.0.1  www.mysite.site

保存之后退出即可

2.Windows

如果使用的是Windows系统,我们打开C:\Windows\System32\drivers\etc\hosts文件

# 增加如下代码: 
127.0.0.1  www.mysite.site

如果提示权限不够,那就使用管理员身份打开

3.配置域名

Django默认是不允许域名访问的,我们需要在配置文件里(这里是dev.py)修改ALLOWED_HOSTS 列表,添加上对应的域名即可

ALLOWED_HOSTS = ['www.mysite.site']

或者设置 通配域名,允许全部域名
ALLOWED_HOSTS = ['*']

4.前后端跨域问题

来自A服务器的js发起请求B服务器的资源或服务称之为跨域请求
如果前端与后端的数据来自不同的域名,就会形成跨域问题,只要是协议、域名、端口三者其一不同那就会形成跨域,我们可以使用 CORS 来解决后端对跨域访问的支持

4.1 安装django-cors-headers
pip install django-cors-headers -i https://pypi.tuna.tsinghua.edu.cn/simple
4.2 添加应用

我们打开项目配置文件(这里是dev.py),在INSTALLED_APPS列表添加corsheaders

INSTALLED_APPS = (
    ...
    # 添加 django-cors-headers 使其可以进行 cors 跨域
    'corsheaders',
    ...
)
4.3 添加中间件

我们打开项目配置文件(这里是dev.py),在MIDDLEWARE 列表添加corsheaders中间件

MIDDLEWARE = [
    ...
    # 添加 django-cors-headers 使其可以进行 cors 跨域,放在最上面注册
    'corsheaders.middleware.CorsMiddleware',
]
4.4 设置白名单

因为从前端发起的请求与后端不一致,我们需要给它设置白名单让它允许访问

我们打开项目配置文件(这里是dev.py),添加CORS_ORIGIN_WHITELIST 列表如下

# CORS跨域请求白名单设置
CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:8080',
    'http://localhost:8080',
    'http://www.mysite.site:8080',
)
CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie
4.5 允许访问的域名

即使设置了白名单,那只是为了解决跨域问题,但如果在ALLOWED_HOSTS 列表没有添加允许访问的域名那也是不行的(就算是不跨域也不行),所以可以在ALLOWED_HOSTS 添加指定的域名或全部域名

我们打开项目配置文件(这里是dev.py),修改ALLOWED_HOSTS 列表如下

ALLOWED_HOSTS = ['www.mysite.site']

或者设置 通配域名,允许全部域名
ALLOWED_HOSTS = ['*']

猜你喜欢

转载自blog.csdn.net/qq_39147299/article/details/108336820