我正在使用swagger4spring-web。 我很好地申请了我的申请。它运作良好。但是,如果我将此Web应用程序加载到其他服务器,则会出现CORS问题。
从我的应用程序加载apis,它运行良好。 如果我按下测试按钮,“试试看”,它失败了,因为它默认设置为“localhost”。
我想设置按钮的动作网址“试一试”。
我该如何解决?我想将此URL更改为真正的IP地址。
答案 0 :(得分:1)
为了解决Spring RESTful应用程序的CORS问题,请查看this tutorial。换句话说,创建以下类并在您的应用程序中使用它:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
@Component
public class SimpleCORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
关于swagger4spring-web:如果查看this example code,这个类继承自ApiDocumentationController,最后一个提供了一个名为setBasePath()的方法,用它来设置你的swagger-api的basePath :
@Controller
@RequestMapping(value = "/documentation")
public class ExampleDocumentationController extends ApiDocumentationController {
public ExampleDocumentationController() {
...
setBasePath("http://www.youraddress.com");
...
}
}
您还可以设置本地IP地址(固定值或动态值)。