1 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
您能否展示更多有關(guān)如何嵌入 iframe 以及為原始頁面提供什么服務(wù)的信息?
似乎正在發(fā)生的事情是您在沒有意識(shí)到的情況下有效地發(fā)出跨域請(qǐng)求。8080 和 4200 是不同的域,如果頁面的一部分從一個(gè)域加載,而部分頁面(即 iframe)從另一個(gè)域加載,則構(gòu)成跨域請(qǐng)求,并且一個(gè)域發(fā)送的 cookie 不會(huì)應(yīng)用于對(duì)該域的請(qǐng)求其他,因此不共享會(huì)話范圍。此外,如果您向加載原始頁面的域以外的域發(fā)出 Ajax 請(qǐng)求,除非您設(shè)置 CORS,否則默認(rèn)情況下它們會(huì)被拒絕。這解釋了為什么你必須這樣做。
您必須確保頁面的所有部分(包括 iframe 和 Ajax 請(qǐng)求)都是從同一域加載的,或者您有其他方法可以將會(huì)話附加到請(qǐng)求。通常,JSESSIONID cookie 用于此目的。此 cookie 是否在初始響應(yīng)中發(fā)送?
您通常有一個(gè)應(yīng)用程序服務(wù)于前端,包括初始頁面(例如 4200 上的應(yīng)用程序),以及一個(gè)僅響應(yīng) API 調(diào)用的應(yīng)用程序(例如 8080 上的應(yīng)用程序),并配置了 CORS。這樣所有對(duì)后端的調(diào)用都通過同一個(gè)域完成,并且 cookie 得到正常應(yīng)用。
添加回答
舉報(bào)