记一次接口访问报跨域错误的问题

597 阅读2分钟

记一次接口访问报跨域错误的问题

周五下午3点左右的时候,按照平时的要求开始往系统里上传数据,发现上传不上去了,提示报错。

打开开发者工具一看,是后台接口报错了,提示如下:

系统提示“Access-Control-Allow-Origin”这类问题, 应该是跨域问题。

找问题

然后找开发,因为之前好好的,突然不能用了,怀疑是不是谁更新版本了, 然后挨个问:

后端:我没改。

前端:我改了,但是应该不是我的问题。

大家:你改了,就是你的问题。

这个服务器的拓扑是通过frp进行的中转,同时在前端有一个nginx进行了代理。

在局域网中,是可以正常上传的文件,但是通过域名(frp+nginx)的方式,就无法上传文件(可以正常访问系统)。

于是大家开始纷纷找各种解决方案, 又说让nginx里加配置的,又说让前端里加参数的。

挨个试验了下。

nginx加了一下Access-Control-Allow-Origin的 * ,结果访问提示重复处理的域,连系统都无法登陆了。应该不是这里的问题,又改回来。

然后前端加参数,打了个新包放上去,问题依旧。

大家有点一筹莫展,看情况是系统都没有传到后端服务器,那怎么报错的呢?

在前端nginx里加一下访问日志吧,看看到底啥情况。

在域名对应的server节点下

先加上error_log的配置,一顿重启,发现没有errorlog,那咋回事?

再加上access_log的配置,再一顿重启,发现依旧没有内容,这又是咋回事?

看看nginx里的配置文件,http节点下有配置了access_log,直接从这个日志里看看内容是不是也可以。

打开一看,只记录到了上午的,后面没有了,好像有点不太正常。

这时候有点灵光一闪,好像知道啥问题了。

df -h 一下,果然磁盘已经100%了

解决

把各种临时文件一顿删除,果然可以上传东西了。

其他啥都没有动

总结:

因为前端的服务器只负责代理,其他文件存储、应用处理的都是后面的服务器管。所有没有往服务器那块想。

又因为系统是可以正常访问的,只有上传文件的时候才报错(上传文件也只是走个代理),所以迷惑性很强。

最后的教训:

不是报跨域问题,就是因为跨域的问题,也可能是服务器导致的。