簡體   English   中英

HTTPS 請求:CORS 錯誤,但我仍然獲得數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM