直接postman, curl, 瀏覽器訪問后端接口, response header是不會自動加上Access-Control-Allow-Origin的。
需要在ajax中調用,客戶端request中會加上Origin請求頭 (首先要保證發出的是跨站請求!!!), 服務器端才會加上response響應頭
出現這個提示,說明chrome根本沒有發送這個請求給后端, 99%是因為ajax代碼中沒有寫http:// 或者 https://
出現這個提示,說明后端或者nginx可能配置了重定向 ,比如http自動跳轉https也算重定向
出現這個提示,說明服務端沒寫相應頭 Access-Control-Allow-Origin
瀏覽器發出請求后,服務器端才能寫響應頭
參考:
https://spring.io/guides/gs/rest-service-cors/
開發階段的Vue ProxyTable配置 https://segmentfault.com/a/1190000014396546
Cors請求經過filter之后進入dispatcherServlet,
查找對應的handler (Controller+Method) , getHandler()中會構造HandlerExecutionChain, 並在HandlerExecutionChain中維護cors HandlerInterceptor
applyPreHandle() 中調用DefaultCorsProcessor
DefaultCorsProcessor的處理過程如下:
curl示例:
另外一種情況是因為在進入Controller之前 filter沒過 直接返回302跳轉了, 這時響應頭是沒有跨域字段的