我正在使用swagger4spring-web 。 我很好地应用了我的应用程序。效果很好。但是如果我将此 Web 应用程序加载到其他服务器,则会出现 CORS 问题。
从我的应用程序加载 api,效果很好。 如果我按下测试按钮“尝试一下”,它就会失败,因为它默认设置“localhost”。
我想设置“尝试一下”按钮的操作网址。
我该如何解决这个问题?我想把这个url改成真实的ip地址。
最佳答案
为了使用 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地址(固定值或动态值)。
关于java - 如何在 swaggaer4spring-web 中设置发送按钮的操作 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31201344/