5 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
Spring security 提供了一種在 http 配置器中配置 CORS 的方法,有一種更簡潔的方法可以將 CORS 過濾器添加到應(yīng)用程序中 -
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class MyCORSFilterClass implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
以最高優(yōu)先級(jí)對(duì)過濾器進(jìn)行排序可確保 javax.servlet.Filter 的 MyCORSFilterClassimplementation 是鏈中的第一個(gè)。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
嘗試在本地方法中放置一個(gè)調(diào)試點(diǎn)
corsConfigurationSource()
并檢查它是否正在執(zhí)行。如果它沒有被執(zhí)行,請(qǐng)調(diào)查原因 - 可能通過啟用 Spring 的調(diào)試日志和/或重新檢查 Spring 配置。另外,嘗試添加選項(xiàng)
setAllowedMethods
configuration.setAllowedMethods(ImmutableList.of("HEAD", "GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"));

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
響應(yīng)403反映授權(quán)失敗。您的服務(wù)器可能已設(shè)置為要求對(duì)選項(xiàng)請(qǐng)求進(jìn)行授權(quán)。您必須確保選項(xiàng)配置為發(fā)送成功響應(yīng)(2xx 狀態(tài)代碼),以允許瀏覽器發(fā)送實(shí)際請(qǐng)求。2xx 響應(yīng)通知瀏覽器服務(wù)器處理 CORS 請(qǐng)求。
您的請(qǐng)求在本地有效的原因可能是您在提出請(qǐng)求時(shí)已獲得授權(quán)。因此,請(qǐng)檢查您的身份驗(yàn)證以確保其正確。因此,飛行前請(qǐng)求不會(huì)發(fā)送任何授權(quán)標(biāo)頭,因此您不應(yīng)該在服務(wù)器端進(jìn)行期望。

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
檢查 tomcat 服務(wù)器是否在 $CATALINA_BASE/conf/web.xml 中配置了沖突的 CORS 過濾器

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
Tomcat 也有自己的 cors 過濾器,如果您在 tomcat 之前使用其他服務(wù)器(例如 nodejs、apache 服務(wù)器 vs ),也請(qǐng)檢查其 cors 過濾器。
添加回答
舉報(bào)