2012-12-15 110 views
2

我正在开发需要访问托管在与我的网站相同的域上的REST Web服务的Chrome插件。 Web服务要求用户登录。该网站提供帐户注册和身份验证。我希望能够从插件访问Web服务,而不需要用户在登录到网站时再次从插件登录。我不知道如何做到这一点。我正在使用ASP.NET MVC4为网站提供的表单身份验证。 Chrome浏览器插件当然使用JavaScript的XMLHttpRequest客户端来调用Web服务。使用现有站点身份验证的Chrome扩展身份验证

有很多插件可以做到这一点。 'Delicious Bookmarks Extension'和'Add to Amazon.com Wishlist'就是一个例子。

+0

您是否找到了解决问题的方法? –

回答

1

我没有找到办法以我想要的方式做到这一点。出于安全原因,Chrome浏览器不会出于某种原因将一个网站的Cookie发送到另一个网站,即使其中一个“网站”在技术上只是Chrome扩展程序。

我最终将插件的需要身份验证的部分转换为已登录到的网站提供的iframe。这可让Chrome在请求iframe来源时发送Cookie。这就是Delicious和Amazon.com插件的工作原理。几乎没有代码在扩展中运行,它大部分都是由iframe中的页面提供的。

+1

你能提供更多关于你如何做到的细节吗?我的扩展在一个弹出窗口中有一个iframe,但尽管使用我的凭据从chrome浏览器窗口登录到该网站,但打开弹出窗口仍然无效。我使用javascript注入DOMContentLoaded上的iframe的src。 – hazymat