mim*_*011 2 spring-mvc cors angular-http spring-boot angular
我正在尝试开发一个应用程序,其中Spring Boot用于后端,Angular 2用于前端.
实际上我有连接问题,当我从spring访问mvc登录页面时.
我遇到以下问题:
( 安慰 )
我为FrontEnd端口设置了全局Cors配置.我的请求返回响应状态200.但我无法访问响应,因为我在控制台中收到错误消息.
Spring dosnt有错误.
您需要了解Cors配置的第一件事是在后端添加.您不需要为Angular2 App的每个请求发送cors标头.了解这一点,通过在Spring安全配置类中添加全局CORS配置可以轻松解决此问题.
首先,您需要创建一个过滤器bean:
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class MyCorsFilter implements Filter{
public MyCorsFilter () {
super();
}
@Override
public final void doFilter(final ServletRequest req, final ServletResponse res, final FilterChain chain) throws IOException, ServletException {
final HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "http://localhost:3000");
// without this header jquery.ajax calls returns 401 even after successful login and SSESSIONID being succesfully stored.
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Authorization, Origin, Content-Type, Version");
response.setHeader("Access-Control-Expose-Headers", "X-Requested-With, Authorization, Origin, Content-Type");
final HttpServletRequest request = (HttpServletRequest) req;
if (!request.getMethod().equals("OPTIONS")) {
chain.doFilter(req, res);
} else {
// do not continue with filter chain for options requests
}
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
Run Code Online (Sandbox Code Playgroud)
第2步:在Spring安全配置类中添加:
@Autowired
private MyCorsFilter myCorsFilter;
//CORS
http.addFilterBefore(myCorsFilter, ChannelProcessingFilter.class);
Run Code Online (Sandbox Code Playgroud)
编辑:此配置假设您在localhost:3000上运行angular2应用程序
| 归档时间: |
|
| 查看次数: |
7048 次 |
| 最近记录: |