前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写一个书库项目控制台遇到的问题

写一个书库项目控制台遇到的问题

作者头像
EchoROne
发布2022-08-15 08:20:50
3560
发布2022-08-15 08:20:50
举报
文章被收录于专栏:玩转大前端

3月到4月中间的三个星期和小伙伴一起合作完成了一个主要用于交换分享好书的小程序。一个人负责小程序,一个负责后端,我负责控制台。主要用vue、vue-router、element-ui等技术,下面梳理一下我写控制台时遇到的问题以及解决方法,有说法错误的还望大佬们指出。

一、图片提交到服务器总是失败

首先,图片提交到服务器有两种方式,一种是即传即提交,一种是提交到表单然后表单再提交。

第一种方式调用原生的或者框架的我用了都没问题,第二种方式老是会报跨域问题,即使后端已经设置了header('Access-Control-Allow-Origin:*');但我发现用原生表单提交就不会报跨域错误,代码如下,(其中server_url是服务器地址,这里不方便透露)

代码语言:javascript
复制
  <form action="http://server_url/addBook.do" method="post" enctype="multipart/form-data">  
   		<input id="name" name="name" value="重构改善既有代码的设计">     
   		<input id="author" name="author" value="lunus">     
   		<input id="pubHouse" name="pubHouse" value="机械出版社">     
   		<input id="isbn" name="isbn" value="0123456">     
        选择文件:<input type="file" name="image" width="120px">  
        <input type="submit" value="上传">  
  </form>  

首先发图片到服务器content-type必须为multipart/form-data,原生表单发送的数据没经过处理因此是Request-Payload。于是衍生想法让发送的表单数据形式以及请求头跟原生表单提交的一致不就可以解决问题?

下面代码的尝试顺利解决~

用FormData可取到在表单中上传的图片并变成原生表单提交的数据形式,不管是原生上传图片按钮还是框架图片上传组件都可以。processData指不处理传送的数据形式,content-type则用默认的,这里有图片上传默认会用form-data,完美解决,请求头以及数据形式跟原生表单一模一样,而这里用了ajax,则更加灵活

二、跨域问题

当请求头不携带cookie或者token时,后端设置header('Access-Control-Allow-Origin:*')即可解决浏览器的跨域报错,若携带了,则设置了跨域允许还是会报错,在我这个项目中我是通过在vue的配置文件中设置proxyTable属性解决这个问题的。

配置的路径如下:

server_url填写服务器域名,前面的‘/’表示发送ajax的url第一个符号是 / 的话,就在其前面加上服务器地址,changeOrign表示允许跨域,pathRewrite表示重写路径,可不写

这样配置后提交表单调用axios

这里请求的url原地址为'server_url/getBookList.do',比如server_url为http://47.93.192.186:8080,记住配置文件改之后需重新npm run dev才可生效

三、vue单文件组件怎么部署到服务器上访问

这个网上一搜就有了,就是用npm run build即可自动打包为线上环境,然后项目中会生成一个dist文件夹

就将dist文件夹放在服务器资源里,再访问index.html即可

控制台项目已放在我的github开源项目中

zyqq/read-manager

,欢迎有兴趣的朋友查看提出意见

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、图片提交到服务器总是失败
  • 二、跨域问题
  • 三、vue单文件组件怎么部署到服务器上访问
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档