vue axios发送post哀求跨域办理

打印 上一主题 下一主题

主题 641|帖子 641|积分 1923

超过办理有两种方案,后端办理,前端办理。后端办理参考Django跨域办理-CSDN博客
该方法之前试着可以的,但是复制到其他电脑上报错,以是改用前端办理
1、main.js做增长如下配置
  1. import axios from 'axios'
  2. Vue.prototype.$axios = axios
  3. axios.defaults.baseURL = '/api/'  //关键代码
  4. axios.defaults.timeout = 5000
复制代码
2、vue.config.js添加如下
  1. module.exports = {
  2.     // 输出目录
  3.     assetsDir: 'static',
  4.     devServer: {
  5.     proxy: {
  6.       '/api/': {
  7.         target:'http://127.0.0.1:8080/', // 你请求的第三方接口
  8.         changeOrigin:true, /* 在本地会创建一个虚拟服务端,然后发送请求的数据,
  9.         并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题 */
  10.         pathRewrite:{  // 路径重写,
  11.             /* 替换target中的请求地址 */
  12.           '^/api/': ''
  13.         }
  14.       }
  15.     },
  16.   }
  17. };
复制代码
原理:
由于我们给url加上了前缀/api/,我们访问/xxx/yyy就当于访问了:/api/xxx/yyy
proxy中拦截了/api/,并把/api及其前面的所有更换成了target中的内容,因此实际访问Url是http://127.0.0.1:8080/xxx/yyy
3、vue中的哀求
  1. axios.post('http://127.0.0.1:8080/login/',this.loginForm).then(res=>{})
复制代码
 改成
  1. axios.post('/login/',this.loginForm).then(res=>{})
复制代码
实践发现 npm run serve  从vue前端链接试着办理跨域了
但是npm run build 从django后端地址访问提示路由缺少api

以是要在我的url 都加上前缀api
old urls.py
  1. from django.contrib import admin
  2. from django.urls import path
  3. from django.views.generic import TemplateView
  4. from Myapp.views import *
  5. urlpatterns = [
  6.     path('admin/', admin.site.urls),
  7.     path('', TemplateView.as_view(template_name='index.html')),
  8.     path('login/', login),  # 登陆
  9.     path('register/', register),  # 注册
  10. ]
复制代码
修改old urls.py为
  1. from django.contrib import admin
  2. from django.urls import path,include
  3. from django.views.generic import TemplateView
  4. urlpatterns = [
  5.     path('admin/', admin.site.urls),
  6.     path('', TemplateView.as_view(template_name='index.html')),
  7.     path('api/', include('Myapp.urls')),
  8. ]
复制代码
在项目下新增urls.py 配置如下
  1. from django.urls import path
  2. from Myapp.views import *
  3. urlpatterns = [
  4.     path('login/', login),  # 登陆
  5.     path('register/', register),  # 注册
  6. ]
复制代码
 项目下urls.py 如下所示

亲测跨域办理

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表