项目中有多处文件上传,在内网中测试没有问题,可以上传成功,但是在外网环境下,无法使用。
内网环境中,项目运行启用 nodejs 反向代理,将 app 指向 'http://12.12.12.12:8888/app/'
代码如下:
var formData = new FormData();
formData.append('file', ele.files[0]);
$http({
method: 'POST',
url: 'http://12.12.12.12:8888/app/api/upfile', //该IP为内网连接的后台IP
data: formData,
headers: {'Content-Type': undefined},
transformRequest: angular.identity
}).successful( res => {
console.log(res);
});
报错:400 Bad Request
解决:在外网连接时,将 url 地址换成 '/app/api/upfile' 即可
原因:在内网中,文件上传使用带 IP 的 url ,反向代理地址到后台是可实现的;但是如果使用不带 IP 的 url,在发起请求的时候,浏览器会自动在请求 Request URL 中加上前缀 'localhost:8888',此时本地 IP无法代理访问后台服务器