高质量搬砖工人必会——Vue利用axios发起ajax请求遇到的问题(been blocked by CORS policy:;Failed to load resource: net::ERR_F)

问题一:

Access to XMLHttpRequest at 'http://192.168.0.102:8000/students/' from origin 'null' has been blocked by CORS policy

1.1 导致这个问题的主要原因是:

axios的ajax请求跨域请求默认情况下不允许。(当地址的协议、主机、端口任意一个不同时都属于跨域访问)。这样做是为了防止跨站攻击保证服务器安全。

1.2 解决方法

1.2.1 方法一:通过后端解决

        通过后端专门的CORS解决方案(django和spring都有各自对应的cors解决方案),这里以django为例:

(1)首先安装django-cors-headers库:pip install django-cors-headers

(2)将django-cors-headers注册到django中settings的INSTALLED_APPS中

(3)添加到settings中的middleware中:'corsheaders.middleware.CorsMiddleware'。注意这个中间件要防在CSRF中间件之前

(4)添加允许跨域访问的地址白名单。(这里的白名单端口需要与live server打开文件的默认端口相同,如果是用nodejs的http-server打开,则应与http-server中使用的端口相同

CORS_ORIGIN_WHITELIST =(
    'http://192.168.0.102:5500',
)
# 设置cors的cookies
CORS_ALLOW_CREDENTIALS = True

整合settings中需要更改的代码:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 这个中间价一定要放在CSRF前面,用于解决ajax跨域问题
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.student',
    'corsheaders',
]

# 添加cors配置
# 设置白名单,注意这里的白名单端口号要写前端的访问端口号
# 前端通过live server打开,端口号为5500
CORS_ORIGIN_WHITELIST =(
    'http://192.168.0.102:5500',
)
# 设置cors的cookies
CORS_ALLOW_CREDENTIALS = True

问题二:Failed to load resource: net::ERR_FAILED

具体看我的另一篇文章:Failed to load resource: net::ERR_FAILED解决方案

这里我补充第二种方法更加简单:

在vscode中下载插件:live server。通过live server打开前端文件即可解决问题。

 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值