我正在嘗試開發一個應用程序,用於後端的Spring Boot和用於前端的Angular 2。Angular 2 Spring Boot登錄CORS問題
其實我有連接問題,當我從春天訪問mvc登錄頁面。
我得到以下問題:
(控制檯)
我已經爲FrontEnd端口設置了全局Cors配置。我的請求返回響應狀態200.但我不能訪問響應,因爲我得到控制檯中的錯誤消息。
Spring dosnt有錯誤。
我正在嘗試開發一個應用程序,用於後端的Spring Boot和用於前端的Angular 2。Angular 2 Spring Boot登錄CORS問題
其實我有連接問題,當我從春天訪問mvc登錄頁面。
我得到以下問題:
(控制檯)
我已經爲FrontEnd端口設置了全局Cors配置。我的請求返回響應狀態200.但我不能訪問響應,因爲我得到控制檯中的錯誤消息。
Spring dosnt有錯誤。
您需要了解Cors配置的第一件事是添加到後端。您無需將每個來自Angular2應用程序的請求發送給Cors標頭。瞭解到這個問題很容易通過在你的spring安全配置類中添加全局CORS配置來解決。
首先,你需要創建一個過濾器豆:
@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 {
}
}
第2步:在你的春季安全配置類添加:
@Autowired
private MyCorsFilter myCorsFilter;
//CORS
http.addFilterBefore(myCorsFilter, ChannelProcessingFilter.class);
編輯: 此配置假定你有angular2應用程序在運行本地主機:3000
如果您正在使用Spring 4.2和更多版本,可以使用CORS開箱即用的第一類支持。閱讀page。
您可以通過在類級別定義以下標註脫身: @CrossOrigin(origins = "http://localhost:3000", maxAge = 3600)
**感謝**,這是與一個Cors的第一個問題。它爲我工作 – mimu1011
很高興聽到:)不客氣。 –