首页 > 其他分享 >DJango + Vue 跨域问题解决

DJango + Vue 跨域问题解决

时间:2022-11-01 16:11:26浏览次数:51  
标签:... Vue 跨域 xxx DJango ALLOW CORS true

什么是跨域

同源: 协议 + 域名 + 端口号,三者完全相同
以上三个元素只要有一个不相同就是跨域

产生跨域异常的报错信息如下:
access to xmlhttprequest at 'http://ip:port1/api/xxx' from origin 'http://ip:port2' has been blocked by cors plicy: no 'accesss-control-allow-orgin' header is present on the requestred resource.
翻译:从源地址http:ip:port2 发起的到 http://ip:port1/api/xxx 的xmlhttprequest访问违反了同源策略:因为在请求头中没有access-control-allow-origin的值

跨域解决

一般使用前后端分离都需要使用跨域(比如:DJango + Vue)

前端配置

# vue.config.js
module.eports = {
	devServer:{
		hot: true,
		port: devPort,	// 当前环境的端口
		open: true,
		noInfo: false,
		overlay: {
			warnings: true,
			errors: true,
		},
	},
	proxy: {
		'/xxx':{	// 此处xxx与Django中的app对应
			target: 'https://0.0.0.0:8000',		// 目标(后端)服务器地址
			changeOrigin:true,					// 是否修改源
			pathrewrite: {						// 重写url路径
				'^/api': ''
			}
		}
	}
}

后端配置

# settings.py
# pip install Django-cors-hearers
# 添加corsheaders应用
installed_app:[
	...
	'corsheaders',
	...
]

# 添加corsheaders中间件
middleware_class = {
	...
	corheaders.middleware.corsmiddleware,
	django.middleware.common.commonmiddleware,
	...
}

# 跨域增加的配置
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
	'DELETE',
	'GET',
	'OPTIONS',
	'PATH',
	'POST',
	'PUT',
	'VIEW'
)
CORS_ALLOW_HEADERS = (
	'XMLHttpReqest',
	'X_FILENAME',
	'accept-encoding',
	'authorization',
	'content-type',
	'dnt',
	'origin',
	'user-agent',
	'x-csrftoken',
	'x-request-with',
	'Pragma',
)

标签:...,Vue,跨域,xxx,DJango,ALLOW,CORS,true
From: https://www.cnblogs.com/totopian/p/16848071.html

相关文章

  • 为什么vue3要选用proxy,好处是什么?
    提问Object.defineProperty()和proxy的区别?为什么vue3要选用proxy,好处是什么?proxyProxy对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋......
  • vue项目.editorconfig,.eslintgnore,.eslintrc配置编写规则文件
    1:介绍  ESLint是一个QA工具,用来避免低级错误和统一代码的风格,ESLint的主要用途:审查代码是否符合编码规范和统一的代码风格;审查代码是否存在语法错误;ESLint中文网地址......
  • Vue项目配置postcss-pxtorem
    Vue2项目安装指定版本最新版本@6会报错:PostCSSpluginpostcss-pxtoremrequiresPostCSS8npmipostcss-pxtorem@5.1.1-D配置vue.config.jsmodule.exports=......
  • unplugin-vue-components 在 vite 中的使用和配置
    unplugin-vue-components是由vue官方人员开发的一款自动引入插件,可以省去比如UI库的大量import语句。安装:npmiunplugin-vue-components-D配置:vite.confi......
  • vue3-组合式api-定义响应式数据-reactive,toRefs
    <template> <div>  {{obj.name}}  {{name}}  <button@click="changeObjName">改变名字</button> </div></template><script>import{react......
  • vue组件name的作用
    转自:https://blog.csdn.net/gxdzi/article/details/120645286作用一:递归组件一个组件要用自己的时候,可以通过自己的名字来使用自己。作用二:移除keep-alive状态下组件自......
  • vue3实战-完全掌握ref、reactive
    知道大家使用Vue3的时候有没有这样的疑惑,“ref、rective都能创建一个响应式对象,我该如何选择?”,“为什么响应式对象解构之后就失去了响应式?应该如何处理?”今天咱们就来......
  • vue实战-完全掌握Vue自定义指令
    准备:自定义指令介绍除了核心功能默认内置的指令(v-model和v-show等),Vue也允许注册自定义指令。注意,在Vue2.0中,代码复用和抽象的主要形式是组件。然而,有的情况下,你......
  • vue中的几个高级概念
    混入mixins官方解释混入(mixin)提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的......
  • 前端基础vue
    1、指令 ·v-html,v-text (单项绑定:数据变,视图变)<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"c......