总结本周开发遇到的几个问题:301、302、401、文件上传

总结本周开发中遇到的几个问题:

1. 文件上传

当Content-Type为multipart/form-data时,上传文件的参数必须为FormData格式.

对于文件上传我一直都有一些懵懵懂懂的疑惑,这周在开发中总结的两条:

  • 上传文件的Content-Typemultipart/form-data时,上传文件的参数需要为FormData格式
  • FormData是二进制文件形式,创建FormData的方法为:
const fd = new FormData(); // 创建一个FormData实例
// 向实例中添加属性
fd.append("file", form.files[0].raw); // 文件。对于使用了elemnt-upload组件的数据,取它的.raw即可
fd.append("name", form.files[0].name); // 文件名称
fd.append("description", form.description); // 其它属性
// 根据需要,还可以添加其它属性

2. Nginx代理访问第三方接口

post请求使用301 Moved Permanently,会直接变为Get请求,参数传不进去

对方的post请求使用301 Moved Permanently,导致直接变为Get请求,参数传不进去、结果不正确等等。分析问题的思路是:

  • 首先针对post请求,当配置的location /xxx/路径下没有子路径时,访问这个路径就会301,所以把/去掉就可以了。
  • 但是,对于配置了location /xxx/,使用get请求访问这个路径下的接口,虽然它301了,但是结果正确(这可能因为301本身就会重定向到get请求,反正都是get请求,所以参数能传进去的原因),但是put请求504了。所以,这又是什么原因。。。。。

3. 调用外部服务跨域

调用外部服务,如果用PostMan和在浏览器地址里直接访问可以,但是在浏览器中使用报错,类似跨域,直接找对方开跨域权限

调用外部服务,如果用PostMan和在浏览器地址里访问可以,但是在我们的系统中使用却报错,类似跨域。这时候需要找对方服务,这是因为他们设置了不允许跨域,我们作为调用方没法处理的,所以这时候就不要内耗了,找就对了。

4. Rancher部署

Rancher部署后,nginx代理访问第三方服务401,大多数情况都是因为路径没有写好

有两种可能:

  • nginx的location和服务地址不一致,如大小写检查等
  • 访问的接口打不带服务商。例如,Rancher里的访问路径是portal-web,那么,配置代理路径的时候,就需要把这个路径前缀加上,否则访问的时候打不到我们的服务上,所以就401~ 只能报没有权限的问题。

5. 关于302

重定向,在浏览器中属于浏览器的默认行为,前段没有办法去拦截302响应的结果,也没法对重定向之后的地址做处理。这一点请后端开发谨记!!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值