【vue】vue前端、生产(线上)环境请求unicloud云服务空间axios报错

目录

原因

使用axios的时候,如果是开发环境下,WebStorm(IDEA)会自带跨域功能,说白了就是不用考虑跨域的事情了。但是在生产环境下,vue前端编译成静态文件,只是普通的http请求,所以根据浏览器的跨域规则(域名、端口、协议,一个不同就是跨域),不能发送请求,所以要借助反向代理工具,比如Nginx。

例如本来的开发环境请求是这样的:

js 复制代码
export function getDeviceListById(code) {
  let url="https://fc-mp-f8364129-599d-437d-bf25-31dc95098b4c.next.bspapp.com/user/getDeviceDataByid?id="+code;
  return  axios.get(url);
 }

改为如下:

js 复制代码
import request_app from "@/utils/requests-app";
export function getDeviceListById(code) {
  let data ={"id":code}
  return request_app({
    url: "/user/getDeviceDataByid",
    method: "get",
    params: data
  });
}
js 复制代码
// @/utils/requests-app.js
import axios from "axios";

const requests_app = axios.create({
  baseURL: "/app",
  timeout: 10000,
  // 请求头
  headers: {
    "Content-Type": "application/json;charset=UTF-8",
  },
});
export default requests_app;

Nginx配置如下

js 复制代码
  # 反向代理
    location /api/ {
      proxy_pass http://localhost:8080/;
      proxy_set_header x-forwarded-for  $remote_addr;
    }
    # axios跨域处理 请求unicloud云服务空间
    location /app/{
      add_header 'Access-Control-Allow-Origin' '*';
      proxy_set_header x-forwarded-for  $remote_addr;
      proxy_pass https://fc-mp-f8364129-599d-437d-bf25-31dc95098b4c.next.bspapp.com/;
    }
    # 配置url访问路由,如果不配置就会导致跳转的时候报404
    location / {
      try_files $uri $uri/ /index.html;
    }

总结:借助Nginx使得axios可跨域请求

相关推荐
linweidong6 分钟前
VIVO前端面试题及参考答案
前端·跨域·localstorage·重绘·浏览器兼容·git管理·前端重构
有意义7 分钟前
从零搭建:json-server+Bootstrap+OpenAI 全栈 AI 小项目
前端·后端·llm
温宇飞8 分钟前
CCState:为大型 Web 应用设计的状态管理库
前端
r0ad32 分钟前
读诗的时候我却使用了自己研发的Chrome元素截图插件
前端·javascript·chrome
IT_陈寒1 小时前
React性能优化实战:这5个Hooks技巧让我的应用快了40%
前端·人工智能·后端
江天澄2 小时前
HTML5 中常用的语义化标签及其简要说明
前端·html·html5
知识分享小能手2 小时前
jQuery 入门学习教程,从入门到精通, jQuery在HTML5中的应用(16)
前端·javascript·学习·ui·jquery·html5·1024程序员节
美摄科技2 小时前
H5短视频SDK,赋能Web端视频创作革命
前端·音视频
七号练习生.c2 小时前
JavaScript基础入门
开发语言·javascript·ecmascript
一 乐2 小时前
高校教务|教务管理|基于springboot+vue的高校教务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·教务管理