【问题描述】
同一个接口(请求头中需要传参数“x-authorization”)在Chrome请求是正常的,但是在IE下就报错(版本为 11)。错误信息是“SEC7123:Access-Control-Allow-Headers 列表中不存在请求标头 x-authorization。
【问题原因】
1、域名在阿里云做了负载均衡,直接指向Gateway,不经过Nginx,所以就算怎么配置Nginx都是没意义的,而Gateway是有做header的配置的
headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());
2、我们发现有个有趣的事情,正是因为上面header的配置,在Chrome和IE之间有着不同的显示方式:Chrome是一行就显示了全部,而IE是多行显示。
-
Chrome
-
IE
【解决方法】
换个思路想想,如果就因为IE多行显示导致的问题,那么如果让IE也一行显示全部呢?我们让headerList转化为由逗号隔开的字符串,然后重新放进去header中。重启Gateway,IE能正常请求接口了,成功!
List<String> headerList = requestHeaders.getAccessControlRequestHeaders();
String headerListStr = Joiner.on(",").join(headerList);
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, headerListStr);
网友评论