前後端專案分離 跨域問題

2021-09-23 18:31:45 字數 1202 閱讀 2873

1.跨域------說明最少有兩個域,才會出現跨的這種情況

2.跨域問題出現的本質 a.網域名稱不同,b.埠號不同,c.協議 不同

3,瀏覽器的同源策略-----(非位址列請求),如a頁面在a服 務器,b頁面在b伺服器,在a頁面請求b頁面的資訊就會出現跨域問題,目的是為了保證使用者資訊保安(如果a頁面可以獲取b頁面資訊,相對的session資訊,cookie資訊,等使用者身份標識資訊就可以被模擬訪問,網際網路上就毫無秘密可言了)

4.瀏覽器位址列輸入請求url(解析網域名稱成ip位址,建立tcp連線,接入伺服器,返回資源,瀏覽器渲染,此時瀏覽器器直接訪問伺服器,只有乙個伺服器域)

5,使用ajax請求(此時ajax**是乙個域,伺服器是乙個域)

1.跨域請求時,瀏覽器會先傳送乙個(options方法)預請求檢查是否跨域,返回成功才會傳送正真的請求,只要檢查響應頭裡面是否新增了允許跨域的響應頭設定。

2.springboot專案後端使用(@crossorigin(origins = 「*」)註解,允許任何域訪問

3.問題是—***存在的時候,這個註解會失效

原因:因為請求到達***時,還沒能夠到具體請求此時

能對註解進行解析,得不到允許跨域的訊號提示,

所以會出現跨域問題,

解決辦法:***裡對相應頭里做允許跨域的相應頭設定

/* 允許跨域的主機位址 */

response.setheader("access-control-allow-origin", "*");

/* 允許跨域的請求方法get, post, head 等 */

response.setheader("access-control-allow-methods", "*");

/* 重新預檢驗跨域的快取時間 (s) */

response.setheader("access-control-max-age", "3600");

/* 允許跨域的請求頭 */

response.setheader("access-control-allow-headers", "*");

總結:第一次遇到這個問題,感覺還是很神奇的,之前一直沒有想到servlet這個點,因為請求已經到達了伺服器中,已經算是跨域了,但是此時還沒有進行處理器對映和處理器適配,就沒有到達controller層就不會出現解析註解的器概況,就會出現跨域問題

備註:走***的就可以不用使用註解了,不走***的還是需要使用註解

前後端分離跨域問題

access to xmlhttprequest at localhost 8081 user gettoken?username hyly password hyly from origin http localhost 63342 has been blocked by cors policy ...

前後端分離跨域問題

public class loginhandlerinterceptor implements handlerinterceptor response.sendredirect request.getcontextpath login.html catch ioexception e return ...

前後端分離專案涉及跨域問題

1.不使用jsonp,只修改服務端 response.setheader access control allow origin reqs.getheader origin response.setheader access control allow credentials true respon...