今天记录一个debug的过程吧,
就是前端页面的请求,通过本地的nginx服务器,进行了配置之后,通过本机ip去访问服务器的接口,模拟跨域请求的场景。
问题是这样的: 在没有登录系统的时候,我尝试着去请求某个受限的接口,本来期望是返回一个未登录的提示码给前端,但是结果却是503错误???这啥情况,不跨域,直接访问服务器ip的时候,同样的请求是没有这个问题的(其实这里对于跨域有了点疑问了,本来我的理解是从本机去访问局域网内的另外一台机器,就算是跨域了。但是前段的同事却告诉我不然,在浏览器上输入的ip和端口都跟服务器的一致,又怎么能算跨域呢?我就懵了。。。)回到问题上来,我通过数次重现该问题,注意到是由于重定位的时候,新的定位地址上少了端口号的原因,一开始我还以为是后台服务器shiro没有配置好的问题。但是问题解决后才意识到,shiro只是把重定位的链接给到前端,而这个链接是相对链接不是绝对链接,链接的ip和端口都是前端这边自己拼起来的。
最后问题是前端那边发现的,其实就是nginx的配置不完整,在跳转到新链接的时候,没有把端口号带上。修改一下链接就行了。
关于配置是怎么修改的,现在在家,拿不到代码。。。去公司再补上
补上代码
原代码:
server {
location /vehicle/ {
proxy_set_header Host
host;proxysetheaderX−Real−IP
h
o
s
t
;
p
r
o
x
y
s
e
t
h
e
a
d
e
r
X
−
R
e
a
l
−
I
P
remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://vehicle-api-frontend;
proxy_set_header X-Real-IP $remote_addr;
}
debug后的代码:
server {
location /vehicle/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://vehicle-api-frontend;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
}
其实对nginx的配置不熟悉,只知道加了个端口的配置$server_port,其他的还不太清楚,有空再研究一下。