1.⾸先webapi要设置允许跨域
///
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public sealed class CorsPolicyAttribute : Attribute, ICorsPolicyProvider {
///
private readonly CorsPolicy _Policy;
public CorsPolicyAttribute() {
_Policy = new CorsPolicy {
AllowAnyMethod = true, AllowAnyHeader = true, AllowAnyOrigin = true,
PreflightMaxAge = 60*60*6 };
_Policy.SupportsCredentials = true; // 这个不能使⽤True。User跨域问题处理 _Policy.Headers.Add(\"*\"); _Policy.Methods.Add(\"*\");
//_Policy.Origins.Add(PubConstant.CorsUrl); _Policy.Origins.Add(\"*\"); }
public Task return Task.FromResult(_Policy); } } 2.API控制器增加同源策略标注 /// public class BaseApiController : ApiController 3.存储信息到cookie,注意设置Domain public static void SetUserIdCookie(HttpResponseMessage response, string userId) { var expiresDay = 7; var cookies = new List //string stryqurc = string.Format(CultureInfo.InvariantCulture, \"ricky.{0}\ var newCookie2 = new CookieHeaderValue(UCGlobalDefine.IDCookieName, userId) { Domain = \"user.17track.net\这个是api的域名 Path = \"/\ Expires = DateTimeOffset.Now.AddDays(expiresDay) }; cookies.Add(newCookie2); response.Headers.AddCookies(cookies); } //response在控制器中创建: var response = Request.CreateResponse(HttpStatusCode.OK, result); 3.webapi获取cookie⽅法 public static string GetCookie(HttpRequestMessage request,string cookieName) { //var cookies = request.Headers.GetCookies()?.FirstOrDefault(); var cookieList = request.Headers.GetCookies(); var cookies = cookieList?.FirstOrDefault(); string uid = string.Empty; if (cookies?[cookieName] != null) { uid = cookies[cookieName]?.Value; } return uid; } 4.前端ajax访问,注意设置withCredentials //获取当前⽤户 Ricky.GetUser = function () { $.ajax({ type: \"get\", url: Ricky.Api.GetUser, dataType: \"json\", async: false, xhrFields: { withCredentials: true }, success: function (result) { if (result.Code == 0) { LoginUser = result.Json; } else if (result.Code == -3) { layer.msg(result.Message); top.location.href = \"login.html\"; } else { layer.msg(result.Message); } }, error: function () { layer.msg(\"登录信息异常\"); } });}; 因篇幅问题不能全部显示,请点此查看更多更全内容