一、如何跨域
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
