2016-09-29 127 views
0

我知道在这个论坛上有很多问题提出相同的问题陈述。但我想介绍一下我的特定场景,以获得与此相关的指导方针/建议。 我正在开发一个应该在Azure上部署的MVC应用程序(基本上它使用.net sdk和其他包来处理windows azure)。应用程序完美工作,但在空闲时间为50-60分钟(即无刷新)后,连接丢失。 在调试代码(通过Visual Studio 2015社区版)期间,我发现它将流重定向到Sign in()函数(我还没有开发该函数,所以我没有理解)。在这里它创建一个URL的标志(用azure AD进行认证)并将应用程序重定向到该URL。这是应用程序出错的地方。在浏览器(谷歌浏览器)控制台我发现它说明在MVC应用程序中启用CORS(将在Azure上部署)

MLHttpRequest无法加载https://login.windows.net/common/wsfed?wa=wsignin1.0&wtrealm=https%3a%2f%2fdhttps%253a%252f%252flocalhost%253a43778%252f&wct=2016-09-26T19%3a05%3a59Z。请求的资源上没有“Access-Control-Allow-Origin”标题。因此不允许访问原产地'https://localhost:43778'。

我尝试使用几乎所有的方法,即

  • 使用的web.config条目
  • 使用NuGet包Microsoft.AspNet.WebApi.Cors版本5.2.2和5.2,使在CORS应用.3,通过webapiconfig.cs和/或控制器,动作级别全局启用。

没有什么似乎是帮助,我无法找到与请求和响应中的CORS相关的标题。 启用CORS会出现什么问题。请指导。 任何帮助将不胜感激。 感谢

编辑: 其实应用的行为像这样在空闲时,一旦我们刷新页面,这一切都还好。我只是在调查为什么连接丢失,以及如何在这么长的空闲时间之后保持应用程序运行。如果CORS以外的任何事情都可能导致此问题,请指导并提出可能的解决方法。

+0

如果网站部署在Azure上,为什么会显示“https:// localhost:43778”?您是否使用网络应用程序或网站URL更新Azure Active Directory应用程序? –

+0

CORS规则在**接收**端指定。在这种情况下'login.windows.net /'。这意味着login.windows.net已指定您的应用程序不被允许。而不是相反。这不是你可以改变自己的事情。 – Nsevens

+0

@Haitham网站实际上尚未部署,但我正在本地主机上进行调试,是的,我已经使用此URL更新了Azure ADD应用程序 –

回答

1

是啊,CORS头不会在你的应用程序中丢失。它从login.windows.net中丢失。如果您重定向到该页面,它不应该是一个CORS问题。 CORS仅在您通过JavaScript拨打电话到另一个域时起作用。检查JS AJAX调用。某物正在尝试呼叫login.windows.net,而不是重定向。

+0

然后我不能在我的请求标题中看到'origin'标题吗?我在代码中指定(同时启用CORS)。 –

+0

,它不是一个跨域请求,本地主机上的应用程序请求“login.windows.net”。它是重定向的服务器端代码,“返回新的RedirectResult(signInRequest.RequestUrl.ToString());” –

+0

服务器返回HTTP 302重定向,浏览器转到URL,而不是涉及CORS的请求。只有在JavaScript代码进行HTTP调用时,浏览器才会查看该调用,并且如果它是跨域的,则会发出HTTP OPTIONS请求来确定该调用是否可用。您遇到与身份验证相关的问题。我会建议学习整个应用程序的工作原理。 – juunas

相关问题