[英]HTTPS Request : CORS error but I still get data
我正在向私有 API(托管 Itop)發出 HTTPS 請求,我收到響應,但我收到CORS Multiple Origin Not Allow
錯誤,因此我的 JavaScript 程序無法使用響應內容。
我應該有CORS授權
這些請求是POST
,使用 fetch 發出的,之前沒有發出預檢( OPTIONS
)請求(fetch 單獨為我的其他GET
API 請求完成了它們,但這里沒有)
Firefox的一些服務器響應時間也很長(~2s),但它似乎並沒有改變任何東西
不允許在同一響應中在一個標頭中發送多個Access-Control-Allow-Origin
標頭或多個來源。 在評論中,您在一個響應中描述了兩個相同Access-Control-Allow-Origin
標頭。 即使是兩個相同的來源也是不允許的。 刪除后端代碼中的一個標頭。
firefox 是識別此問題的最佳瀏覽器,您可以按照此路徑解決此問題。 當您從前端發送請求時,然后響應將來自后端。 但不允許瀏覽器訪問 javascript。 這是cors錯誤。
1.打開你的后端,然后創建一個包調用 CorsFilter。 2.然后創建一個過濾器servlet 3.粘貼這段代碼
@WebFilter(filterName = "CorsFilter", urlPatterns = "/*")
public class CorsFilter extends HttpFilter {
@Override
protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
String origin = req.getHeader("Origin");
if (origin != null && origin.toLowerCase().contains(getServletContext().getInitParameter("origin"))) {
res.setHeader("Access-Control-Allow-Origin", origin);
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
res.setHeader("Access-Control-Expose-Headers", "Content-Type");
if (req.getMethod().equals("OPTIONS")) {
res.setHeader("Access-Control-Allow-Methods", "OPTIONS, GET, PUT, POST, DELETE, HEAD");
}
}
chain.doFilter(req, res);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.