.net core關於跨域及Cookie的部分問題


 

一、如何跨域

    1、情景描述

        目前有A站點和B站點。A站點有一個API接口為UserData接口,B站點希望可以通過ajax請求來獲取A站點該接口數據。

    2、后端修改

        首先在ConfigureServices中配置、添加跨域策略

      

        策略新增好了之后又兩種方法來配置該策略

      方法一:全局添加

      直接在Configure中用中間件的方法來注冊跨域app.UseCors("自己的策略名稱");該方法是讓所有的接口都是可以跨域

      方法二:方法頭添加

      在允許跨域的API上添加 [EnableCors("策略名稱")],該方法可以靈活的允許要跨域的接口。

二、跨域中Cookie的使用

    1、前端

        ajax請求中應該添加以下參數  

                              

    2、后端

        .net core 后端關於Cookie的跨域需要注意的要點還是蠻多的:

      ①是否在CookiePolicyOptions中設置了SameSite為No

        

      ②AllowCredentials是否配置了(見本文第一段)

      ③設置Cookie到底是在Request中設置還是Response中設置(獲取是在Request中獲取,設置實在Response中設置)

 

 

三、問題

    情景如下:

      有A、B兩個站點。其中A站點有一個API如下:

      

 

     這個時候用戶小明在Chorm瀏覽器中打開了A站點、B站點,並在A站點添加了Cookie    :CookieA,  在B站點添加了Cookie:  CookieB。

小明在B站點用ajax訪問了A站點的GetData接口之后結果如下:

    1、B站點並未添加新的名為“NewCookie”的Cookie。

    2、A站點新增了名為“NewCookie”的Cookie。

    3、程序Console.Write輸出的是A站點的Cookie而不是B站點的Cookie

 

   疑問:

   接口明明是B站點請求的,為什么效果確實和A站點訪問的效果一樣?不應該是B站點新增Cookie,Console.Write  B站點的Cookie嗎?

    

     更新:

    轉載一篇關於asp.net 的跨域設置:https://www.cnblogs.com/smartstar/p/9771542.html 

 


免責聲明!

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



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