我有一个连接到我的服务器端应用程序的Web应用程序。当应用程序存储令牌并刷新访问令牌时,Web应用程序获取身份验证代码。当我的访问令牌过期时,当我从localhost发出api调用(Web和服务器端部分都在同一个域上)时,我通常可以刷新令牌。当我部署代码以便Web部件位于域A和域B上的服务器api时,在到期后刷新访问令牌不起作用。我想这是一个起源问题。我从谷歌控制台获得了网络应用密钥。 有没有人知道是否有为oauth启用交叉原点的设置?
更新:也许它与cors没有关系。问题是我可以从localhost运行我的应用程序,而不是从我部署的云应用程序运行。
答案 0 :(得分:1)
我假设您使用的是ASP.NET WebApi 2.0?如果是这样,请参阅这篇文章:
基本上你需要:
安装此nuget包:Microsoft.AspNet.WebApi.Cors
在WebApiConfig.Register方法中,在HttpConfiguration对象上使用扩展方法EnableCors():
public static void Register(HttpConfiguration config)
{
config.EnableCors();
}
使用以下属性装饰您的控制器:
[EnableCors(origins: "*", headers: "*", methods: "*")]
我希望这很有用!
答案 1 :(得分:1)
由于架构不同,可能存在破坏您一天的同域策略。
如果两个页面具有相同的主机,协议和端口,则认为它们来自同一个来源。
From Wikipedia on the same origin policy:
术语"起源"使用域名,应用程序层定义 协议,以及(在大多数浏览器中)运行的HTML文档的TCP端口 剧本。如果,两种资源被认为是相同的来源 并且只有所有这些值完全相同。