前后端分離項目獲取后端跨控制器獲取不到session


最近做前后端分離項目(.net core web api  +vue)時,后台跨控制器不能獲取到session。由於配置的是共享的session。本來以為是共享session出了問題,就在共享session這塊找了大半天的問題,把相關組件刪了一遍,到最后還是不行。最終轉換了思路,是不是前后端分離的問題?是由前端引起的?一查資料,果然是前后端分離引起的問題。由於前台使用axios發送相應的請求,這里需要進行額外的配置

一.在請求的全局配置中添加如下配置

axios.defaults.withCredentials=true;

這段配置的主要功效是將header中的Access-Control-Allow-Credentials設置為true,意為開啟cookie的認證請求。這個屬性默認是關閉的

完成以上的配置問題大概也就解決了,於是再啟動一波

 

 

天不隨人願,瀏覽器竟然報跨域的錯。本來配置的跨域是沒問題的,加上axios的這個配置就成這樣了。。。

二.后端跨域之前的配置

   services.AddCors(options =>
            {
                options.AddPolicy("all", builder =>
                {
                    builder.AllowAnyOrigin() //允許任何來源的主機訪問
                    .AllowAnyMethod()
                    .AllowAnyHeader();
                    //.AllowCredentials();//指定處理cookie
                });
            });

之前的配置是這樣的,由於.net core新版本出來之后,AllowAnyOrigin()和AllowCredentials()不能一起使用,於是就懶省事的把AllowCredentials()給注釋了(自個給自個埋了個坑。。。)導致請求報跨域的錯

三.后端跨域最終配置

由於AllowAnyOrigin()和AllowCredentials()不能同時使用,我們便使用WithOrigins()來限制指定的主機訪問

  services.AddCors(options =>
            {
                options.AddPolicy("all", builder =>
                {
                    builder.WithOrigins("http://localhost:9000") //允許任何來源的主機訪問
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials();//指定處理cookie
                });
            });

萬事大吉~~~

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM