【发布时间】:2021-01-28 23:43:01
【问题描述】:
我正在使用以下代码为基于 Java/Jersey 的 Web 应用程序设置 CORS。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
// resp.addHeader("Access-Control-Allow-Origin", "http://localhost:3000");
resp.addHeader("Access-Control-Allow-Origin", "*");
// resp.addHeader("Access-Control-Allow-Origin", "http://digitran-virtualtestengineer.tk");
resp.addHeader("Access-Control-Allow-Headers", "*");
resp.addHeader("Access-Control-Allow-Methods", "*");
chain.doFilter(request, response);
}
我的客户端代码是基于 ReactJS 的,API 调用如下:
axios.post("http://localhost:9900/upload/file", data, config )
问题: 每次我必须使用以下代码行在 localhost 和域之间切换:
resp.addHeader("Access-Control-Allow-Origin", "http://localhost:3000");
resp.addHeader("Access-Control-Allow-Origin", "http://digitran-virtualtestengineer.tk");
或者我必须允许所有域如下:
resp.addHeader("Access-Control-Allow-Origin", "*");
问题:
有没有办法像下面的代码一样在同一行添加本地主机和域?
resp.addHeader("Access-Control-Allow-Origin", ["http://digitran-virtualtestengineer.tk", "http://localhost:3000"]);
【问题讨论】:
-
为什么不将该配置外部化,以便您可以在不同环境中从 env var 进行设置?这可以简化您的代码,并使其更灵活地部署到新环境。
-
你真的需要
Access-Control-Allow-Origin中的http://digitran-virtualtestengineer.tk吗?仅当实时站点 HTML 来自与托管实时 API 的域不同的域时,您才需要它。 -
感谢每一位。我会努力回来的