记录在一次前后端分离的项目开发中遇到的坑

问题如下图:

在一次实际的项目开发中,我负责前端开发,使用的是vue+axios,后台使用的是php,由于我们的开发环境处于不同的域名和端口下,

所以出现了跨域问题,当然php服务端 可以直接解决这个问题,但是后端设置之后,前端每次都会先发出options请求,然后再post请求,

这说白了,就是每个接口请求两次。我们来分析下原因:

出于安全考虑,并不是所有域名访问后端服务都可以。其实在正式跨域之前,浏览器会根据需要发起一次预检(也就是option请求),用来让服务端返回允许的方法(如get、post),被跨域访问的Origin(来源或者域),还有是否需要Credentials(认证信息)等。那么浏览器在什么情况下能预检呢?

解决方案:

1,axios 请求头中有其它参数(由于开发需求,请求头中确实加入了其它的一些参数,例如token)

解决办法:把异常参数去掉即可

2,由于axios请求头中默认:Content-Type:application/json,我们改为formdata 向后台发送即可

axios.defaults.headers[‘Content-Type‘] = ‘application/x-www-form-urlencoded‘;

这样改完之后, 还需要把数据格式化,接着看:

<script type="text/javascript" src="https://cdn.bootcss.com/qs/6.5.1/qs.min.js"></script>

引入完这个库之后,把传递的数据进行

Qs.stringify({
     mobile:this.mobile,
     verfiyCode:this.sms_code,
}),

是不是 ok了,然后我们接着发请求,那么options请求就没了。

原文地址:https://www.cnblogs.com/lvye001/p/12015851.html

时间: 2024-10-06 10:08:39

记录在一次前后端分离的项目开发中遇到的坑的相关文章

前后端分离分布式项目开发(二)-Dubbox框架

==========================================精品教程推送:PL14352018年最新JavaEE(Java1.8)SSMWeb项目实战学习要趁早,点滴记录,学习就是进步! 不要到处找了,抓紧提升自己!版权保护,加Q:1225462853 Q群:702101215或关注公众号:菜鸟奋斗 ========================================== 3.Dubbox框架 3.1 Dubbox简介 Dubbox 是一个分布式服务框架,其前

python 记录Django与Vue前后端分离项目搭建

python 记录Django与Vue前后端分离项目搭建 参考链接: https://blog.csdn.net/liuyukuan/article/details/70477095 1. 安装python与vue 2. 创建Django项目 django-admin startproject ulb_manager 3. 进入项目并创建名为backeng的app cd ulb_manager   python manage.py startapp backend 4. 使用vue-cli创建v

java结合node.js非对称加密,实现密文登录传参——让前后端分离的项目更安全

前言   在参考互联网大厂的登录.订单.提现这类对安全性操作要求较高的场景操作时发现,传输的都是密文.而为了目前项目安全,我自己负责的项目也需要这方面的技术.由于,我当前的项目是使用了前后端分离技术,即node.js做前端,spring boot做后端.于是,我开始搜索有关node.js与java实现非对称加密的资料,然而,我却没有得到一个满意的答案.因此,我有了写本篇博客的想法,并希望给用到这类技术的朋友提供帮助. 一.明文密码传输对比 首先. 构建spring boot 2.0项目 引入we

gin+vue的前后端分离开源项目

该项目是gin+vue的前后端分离项目,使用gorm访问MySQL,其中vue前端是使用vue-element-admin框架简单实现的: go后台使用jwt,对API接口进行权限控制.此外,Web页面在token过期后的半个小时内,用户再次操作会自动刷新token: 项目很小,适合gin新手学习!(后续有时间会补上相关教程) GitHub地址:https://github.com/Bingjian-Zhu/gin-vue 一.运行go后台项目 (1)把项目clone到GOPATH/src目录下

关于使用vue搭建前后端分离的项目,部署过程遇到的问题

1.首先应该有三个端口号:app前端.网页前端.后台接口  后台接口有很多,但是会映射到zuul上,保证他的端口号是对外开放的,其他不被占用就行 2.pc前端访问后台路径 他的baseUrl是每一次请求的基础路径,需要写服务器后台对外开放的ip和端口号,tomcat部署前端服务也得需要另一个端口号 3.然后发现他的静态资源都访问不到,可以看我的另一篇博客  https://www.cnblogs.com/vv-lilu/p/11106894.html 4.使用vue-lic3搭建的手机端框架,静

前后端分离——前端项目使用Mock.js 模拟数据

一.简单介绍一下Mock.js 众所周知Mock.js因为两个重要的特性风靡前端: 数据类型丰富支持生成随机的文本.数字.布尔值.日期.邮箱.链接.图片.颜色等.(详情见官网) 拦截 Ajax 请求不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据.安全又便捷 文章会用到的API(也是Mock经常使用的API): Mock.mock(url, type, data) 参数名 参数需求 参数描述 例子 url 可选: URL 字符串或 URL 正则 拦截请求的地址 /mock ty

前后端分离的项目,如何解决登陆问题

方案一:使用token 1.前端把account和password,提交到服务端的登陆api 2.服务端验证正确后,生成一个token,并把token和userId,存在缓存里(推荐使用redis数据库),然后把token返回给前端. 3.前端每次的请求头中带有token,这样就能够轻松的实现. 方案二:使用cookie 1.client发送username和password到server 2.server认证成功后,写cookie到client,然后返回ok的json,其中cookie的key

前后端分离和组件化在实际开发中的问题

公司用vue开发的第一个项目告一段落,在开发中存在很多问题,第一就是前后端分离的实际应用中遇到很多坑,前端和后端的依赖其实没完全分开,前端要依赖后端的提供的接口输出,接口有没有报错;后端要依赖前端页面的展示数据的需求来确定接口的输出字段.其实没完全分开,后面讨论是不是可以将数据的打包从java层分出来放到node层,java只要提供通用的查询表功能.这样后台就不用依赖前端页面的输出来规定自己接口的输出项了,而前端想要什么数据就可以在node层调用通用接口来自己组装数据返回给前端,而且前端也可以只

基于Vue的前后端分离项目实践

一.为什么需要前后端分离 1.1什么是前后端分离  前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功能和职责上的一种划分,前端负责页面的渲染,部分页面交互的逻辑,然后通过网络请求与后端进行数据的交互:后端则着重关注业务逻辑的处理,直接操控数据库. 1.2前后端未分离前(1)jsp + servlet 开发模式: JSP页面:负责视图层的渲染及交互,内部可以嵌入java 代码,在某些场景下开发起来比