我有一个使用javascript调用的ASP.NET MVC 4项目。我准备把我的头发拉出来,因为我无法弄清楚为什么这不适用于Azure服务器,但在本地它的工作就像一个魅力。我有以下行动:
public HttpStatusCodeResult Index()
{
//Save the Cookie
CookieUtil.CreateCookie("CookieName", "completeCookieContent", CookieExpiration); //cookie expiration is dynamically calculated in another function to be 30 days later
Response.AddHeader("x-frame-options", "DENY");
Response.StatusCode = (int)HttpStatusCode.NoContent;
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Expires = -1500;
Response.Cache.SetNoStore();
Response.ExpiresAbsolute = DateTime.Now.AddYears(-1);
return new HttpStatusCodeResult(HttpStatusCode.NoContent, "No Content");
}
我的CreateCookie
助手如下:
public static void CreateCookie(string cookieName, string value, int? expirationDays)
{
HttpCookie Cookie = new HttpCookie(cookieName, value);
if (expirationDays.HasValue)
Cookie.Expires = DateTime.Now.AddDays(expirationDays.Value);
HttpContext.Current.Response.Cookies.Add(Cookie);
}
我通过另一个网站(crossDomain)的Jquery Load函数远程调用此页面(可能这是问题)
在本地,如果我使用一个使用相同加载功能的简单html页面进行测试,一切正常,并且cookie在localhost下创建。一旦我在azure(网站)上传这段代码,我就接到电话,它返回204无内容。但Cookie不会被我的域名删除。什么
可能是问题?我错过了一个不允许这个动作的基础吗?我怎么能克服这个?
答案 0 :(得分:1)
要允许其他域使用您应用程序中的某些内容,您必须在Global.asax中指定:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
/*HttpContext.Current.Response.AddHeader(
"Access-Control-Allow-Origin",
"http://AllowedDomain.com"); */
}
'*'表示这是公共访问权限,如果您使用自己的域名,则会使其更加苛刻。