vue跨域解决的几种方案

Vue项目中如何解决跨域的问题?跨域是什么?如何解决?解决方案都有哪些? 跨域问题通常发生在浏览器端,当你尝试从一个域名(比如)去请求另一个域名(如)上的资源时,浏览器会出于安全考虑,默认禁止这种跨域请求。这就是跨域问题的根本原因。跨域本质上是浏览器的同源策略(Same-Origin Policy)在起作用,它要求网页只能访问与其同一源(即相同协议、相同域名、相同端口)的资源。CORS:通过后端服务器配置响应头,允许跨域访问。代理:在开发环境中,通过 Vue CLI 或 Vite 配置代理服务器,将请求转发到目标服务器。JSONP:通过<script> 阅读详情

vue跨域解决的几种方案

一、开发环境解决跨域方法

平时使用vue开发的时候,大多会使用vue-cli搭建项目,在vue-cli搭建的项目中有一个配置文件vue.config.js,可以在该文件中进行相应的配置解决开发环境的跨域问题。
第一步设置公共url

api/index.js
import axios from 'axios'
import router from '@/router/index.js'
import store from '@/store/index.js'
// 创建一个axios实例
var instance = axios.create({
    baseURL: "/api",
})

// 请求拦截器
instance.interceptors.request.use(function (config) {
    config.headers['E_Token'] = store.state.user.E_Token;
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
})

// 响应拦截
instance.interceptors.response.use(function (config) {
   if(config.data.retCode !=0){
        // 处理后台异常
        return false;
    }
    return config;
}, function (error) {
    return Promise.reject(error)
})

export default function (method, url, data = null) {
    method = method.toLowerCase();
    if (method == 'post') {
        return instance.post(url, data)
    } else if (method == 'get') {
        return instance.get(url, data)
    } else if (method == 'delete') {
        return instance.delete(url, data)
    } else if (method == 'put') {
        return instance.put(url, data)
    } else {
        console.error('未知的method' + method)
        return false
    }
}
api/modules/pagesApi.js
import req from '../index'

//用户注册接口
export const register =(params)=>{
    return req("post", '/user/register', params)
}

//用户登录接口
export const login =(params)=>{
    return req("post", '/user/login', params)
}


//Model列表及分页
export const getFormList =(params)=>{
    return req("post", '/model/getFormList', params)
}

//查看详情
export const queryModel =(params)=>{
    return req("get", '/model/queryModel/'+params.id,{})
}

//Model删除接口
export const deleteModel =(params)=>{
    return req("delete", '/model/deleteModel/'+params.id,{})
}


//Model新增
export const insertModel =(params)=>{
    return req("post", '/model/insertModel', params)
}

通过拦截器我们可以更加容易的与后台进行交互,同时简洁了代码,使得管理更加容易,我们创建拦截器的时候可以指定baseUrl,这里我指定的是**"/api",因为接下来我们需要对"/api"进行拦截配置,目的是凡是以"/api"开头的请求url都会将url中的"/api"**的前面添加上我们指定的内容。
例如:

'/api/user/login'     替换成   'http://119.20.224.137:8201/api/user/login'
vue.config.js
devServer: {
    // 1.指定服务的ip
    host: "192.168.0.128",
    // 2.指定服务的端口
    port: 3000,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
	// 3.开发环境进行http的代理
    proxy: {
	   // 匹配 url 路径的开头
      '/api': {
	    // 1.路劲只要是/api开头的url都代理到下面这个网站。
        // 例如:'/api/xxxx' 会代理到 https://119.20.224.137/api/xxxx
        target: 'http://119.20.224.137:8201',
        changeOrigin: true,
        pathRewrite: { '^/api': '/api/' }
      }
    }
  },

二、生产环境解决跨域方法

配置nginx代理

使用nginx反向代理,在配置文件nginx.conf中找到server{}对象,更改项目地址root和配置代理地址proxy_pass,这个方法适合前端静态文件使用:

location / {
    root   D:/browseClient/dist;  #自己的前端项目地址
    index  index.html index.htm;
}
#解决跨域
location /api {                                # 自定义nginx接口前缀
    proxy_pass   http://127.0.0.1:3000;            # 后台api接口地址
            proxy_redirect default;      
    #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
}

三,后端处理

 response.setHeader("Access-Control-Allow-Origin", "*");//* or origin as u prefer
 response.setHeader("Access-Control-Allow-Credentials", "true");
 response.setHeader("Access-Control-Allow-Methods", "PUT, POST, GET, OPTIONS, DELETE");
 response.setHeader("Access-Control-Max-Age", "3600");
 response.setHeader("Access-Control-Allow-Headers", "content-type, authorization");
Vue项目中是如何解决跨域的呢? 代理(Proxy)也称网络代理,是一种特殊的网络服务,允许一个(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。CORS (Cross-Origin Resource Sharing,跨域资源共享)是一个系统,它由一系列传输的HTTP头组成,这些HTTP头决定浏览器是否阻止前端 JavaScript 代码获取跨域请求的响应。一定要注意跨域是浏览器的限制,你用抓包工具抓取接口数据,是可以看到接口已经把数据返回回来了,只是浏览器的限制,你获取不到数据。发送请求中,配置请求的根路径。 阅读详情

相关推荐

解决Vue项目跨域问题的实用方法

跨域是指浏览器的同源策略限制,即只允许相同协议、域名和端口的请求。本文将介绍一些解决Vue项目跨域问题的实用方法,帮助开发者顺利处理跨域请求。库,服务器会在响应头中添加一些特定的字段,告诉浏览器允许跨域请求。这样,Vue项目就可以直接通过AJAX或Fetch方式访问后端接口,而无需担心跨域问题。通过以上三种方法,你可以有效解决Vue项目中的跨域问题。标签的跨域特性来实现数据的传递。如果你有控制后端服务器的权限,可以通过配置服务器的响应头来解决跨域问题。在Vue项目中,可以通过配置代理服务器来解决跨域问题。

git_web425的博客 1160

VUE跨域、常用解决跨域的方法

VUE跨域、常用解决跨域的方法

codingLeader的博客 9万+

华为手环实时心率数据导出到UWP项目中

hello大家好呀O(∩_∩)O最近在做毕设 其中有个小功能要用到实时心率数据。查找网上的资料发现只有小米手环的实时心率数据导出但是没有华为手环的,我试了华为手环但是并不能行得通哈哈哈。现在分享一下华为手环实时心率数据导出的代码。

apple_63713858的博客 1582

【Vue学习笔记】跨域的六种解决方案

跨域问题的解决方法 JSONP Nginx反向代理 CORS解决跨域问题 postMessage解决跨域问题 WebSocket解决跨域问题 devServer代理跨域

biancheng_的博客 1万+

Unity四部曲(核心)

需要先改成Cube复杂的展开留到unity进阶再说。

ultraman1234566的博客 2797

Deepseek 10分钟化身理性荐股神器:触碰程序员不敢想的天花板

在这个消息疯狂、波动频繁的市场,“理性”两字显得弥足珍贵。通过Deepseek+AkShare+Aktools+Dify四位一体的方案,能帮我们降低信息搜集成本,并在短期投资领域搭建出一套“可解释、低门槛、易定制”的量化荐股流程。不要再盲目听小道消息或依赖情绪驱动,不妨给自己一个机会,让数据说话。而要注意的是,“理性荐股”并非万能,它只是工具,最终的收益还得依赖投资者自身对风险和机遇的权衡。祝大家都能在这股市里收获理性的底气,寻得更精准的入场时机。

qqxdh的博客 3754

vue跨域解决的几种方案【建议收藏】

vue跨域解决的几种方案!!!

小二丶的博客 1209

利用Python脚本生成IDA Pro许可证文件idapro.hexlic的完整指南

本文提供了一份详细的Python脚本指南,用于自动化生成IDA Pro的许可证文件idapro.hexlic。文章深入解析了脚本原理,包括构建许可证JSON、RSA密钥修补与签名生成机制,并附有完整的操作流程与常见问题排查,帮助逆向工程人员快速完成本地化许可部署。

weixin_29313547的博客 613

【跨域】springBoot + VUE解决跨域问题几种处理方案

前后端分离解决跨域问题几种处理方案

suiyishiguang的博客 2496

Nvidia Tesla A100 驱动安装方法

Nvidia Tesla A100 驱动安装方法 遇到的问题:以前安装tesla系列、geforce系列等gpu 驱动的时候,只需执行nvidiaxxxx.run驱动包或者安装nvidiaxxxx.rpm包即可,但遇到新的GPU Nvidia Tesla A100的时候,安装完驱动似乎不起作用,找了半天资料,原来需要以下步骤才可以使用;

qq_24343177的博客 2万+

31、贝叶斯认知建模与隐马尔可夫模型:理论与应用

本文探讨了贝叶斯认知建模与隐马尔可夫模型(HMM)的理论基础及其在认知科学和神经科学中的应用。重点介绍了贝叶斯定理和HMM的基本原理,并结合实际案例,如情绪识别系统和脑机接口(BCI),展示了它们在处理复杂认知任务中的强大能力。文章还讨论了贝叶斯-HMM模型的技术细节、优势与局限性,以及未来的发展前景。

meat5的博客 141

【跨域问题】springBoot + VUE解决跨域问题几种处理方案

一:为什么会出现跨域问题? 出于浏览器的同源策略限制。 同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。 二:什么是跨域? 当一个请求url的协议、域

2746

虚拟电厂功率预测最佳实践白皮书

虚拟电厂(VPP)通过聚合分散的可再生能源资源,为电网提供可观测、可调度和可交易的解决方案。本文提出了一套功率预测方法论,并给出LSTM实现脚本,涵盖资源接入、数据治理、预测模型设计及市场交易闭环。针对风-光-储-负荷混合场景,该方法论强调轻量化部署和滚动优化,可有效提升预测精度和调度收益。未来研究将融合深度气象预报和强化学习,进一步优化VPP的协同调度能力。

专注AI大模型,软件混淆,授权 377

解决axios跨域问题

方法一: 一、创建vue项目(vue init webpack projectName) 二、安装axios(npm insatll axios) 三、配置代理(config/index.js): 在开发环境的代理列表proxyTable添加 '/api': { target: 'http://127.0.0.1:8888', //自己服务的ip和服务的端口 changeOrigin: true, pathRewrite: {

虎小币的博客 5056

RML2018.01a数据集的读取与使用

基于深度学习的自动调制识别

QAQIknow的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

vue开发环境怎么使用vue-cli代理服务器解决跨域

目标:解决跨域问题什么是跨域: 网页所在url的协议, 域名, 端口号, 和Ajax请求url的协议, 域名, 端口号有一个对应不上, 就发生跨域 跨域是浏览器对ajax做出的限制 例如我们演示用axios请求网易新闻地址, 发现跨域报错,请求不到数据 http://c.m.163.com/nc/article/headline/T1348647853363/0-40.html 代理转发 如果后端jsonp也不弄, cors也不弄, 就给你个接口地

超人不会飞 807

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

跨域解决方案及原理

changeOrigin:true // 开启代理,在本地会创建一个虚拟服务器,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题。// 允许跨域访问子应用页面。原理:动态生成script标签,通过src属性进行加载。3、CORS跨域资源共享,服务器端进行配置,加一个响应头。缺点:不支持POST请求,只支持get请求。4、vue的反向代理配置(在后端不解决跨域的情况下,前端如何解决跨域)1、jsonp方法。2、中间服务器代理。

xuyao的博客 97

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Vue 反向代理 解决跨域

Vue 反向代理 解决跨域

m0_65544665的博客 367

项目里面怎么解决跨域的?

前端解决跨域的几种方式

weixin_70245286的博客 1514

前端面试题150(vue跨域的解决方法)

Vue.js应用在开发过程中,经常会遇到跨域问题,尤其是在进行API请求时。这是因为浏览器的同源策略限制了从一个源加载的网页脚本访问来自不同源的资源。

God's asylum的博客 555

Vue如何解决跨域

看到这个问题我们不禁会想为什么会出现跨域?什么是跨域? 一、什么是跨域?为什么会出现跨域? 跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。 这里列举一个经典的列子: 协议跨域 http://a.baidu.com访问https://a.baidu.com; 端口跨域 http://a.baidu.com:8080访问http:/...

weixin_45069190的博客 317

vue跨域解决方法

vue跨域解决方法 vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' header is present on the requested resource.” 这种跨域错误。     要想本地正常的调试,解决的办法有三个:   一、后台更改header   ...

王永存 5553

解决前端跨域的几种方法

解决前端跨域的几种方法 了解跨域出现的原因 解决跨域的几种方法 想要解决跨域 先要知道为什么会出现跨域 跨域:指的是浏览器不能执行其他网站的脚本 它是由浏览器的同源策略造成的 是浏览器对javascript添加的安全限制 同源策略是一种约定 是浏览器核心的安全功能 同源策略会造成以下的影响 Cookie、LocalStorage 和 IndexDB 无法读取 DOM 和 JS 对象无法获取 Ajax请求发送不出去 是否同源主要看一下三个方面: 协议是否相同(http https fil

greed 1万+

vue 跨域问题解决方案

用Vue-cli脚手架搭建了个demo,前后分离就有跨域问题的出现。 vue-clie搭建demo步骤(传送门):https://www.cnblogs.com/wangenbo/p/8487764.html 我自己在网上找了2个接口做测试: 优快云:https://www.youkuaiyun.com/api/articles?type=more&amp;category=home&amp;show...

qq_33443033的博客 6万+
上一篇: 前端发送请求的方法总结
下一篇: Vue history路由模式 刷新404
平凡的娃
博客等级 码龄7年 3粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值