问题现象
tomcat返回403跨域主要是Origin值问题,从浏览器F12可以看到报错的请求是存在Origin头部的,浏览器这一部分可能Origin和host是一样的,不会有问题, 但是通过中间nginx抓包可以看到转发至tomcat这一段,可能出现不一致的情况。这个问题最主要的是中间某个nginx没有正确的设置Host值,解决方式有如下几种:
- 设置Origin的值为空,绕过跨域 proxy_set_header Origin "";
- 使用more_headers 移除 Origin头部
- 使用proxy_set_header Host xxxx; 设置Origin所需的Host,如果有多层nginx,可以只在最后一个设置。但是这样也有局限性,如果外部多个出口的情况,面对用户有多个地址,那就仍然受限,需要每个host都配置一个server
评论