Silverlight不在跨域浏览器请求中发送cookie

时间:2010-01-15 15:04:35

标签: silverlight cookies cross-domain

我有一个Silverlight 3控件,它向http:// somedomain /发出跨域HTTP请求。我正在使用浏览器HTTP堆栈来发出此请求。在somedomain上有适当的clientaccesspolicy.xml。

我的浏览器有一组针对somedomain的cookie,我希望在发出所述HTTP请求时使用这些cookie。

当从http:// localhost /加载我的Silverlight控件时,我的cookie似乎都没有传输(我使用Fiddler跟踪HTTP流量)!

当我将xap上传到http:// somedomain /虽然并从那里加载它(因此HTTP请求不是跨域)时,我看到我的所有浏览器/ IE cookie都被传输了所有内容很好。

这是预期的行为吗?我检查过MSDN,它说无论请求是否是跨域的,都会传输浏览器cookie。

提前致谢!

2 个答案:

答案 0 :(得分:1)

用了类似的问题花了几个小时。原来该网站不在可信站点中。这似乎阻止了Silverlight SharePoint ClientContext使用的Browser WebRequest发送所需的cookie(在我的情况下是FedAuth)。

答案 1 :(得分:0)

实际上,当使用浏览器HTTP堆栈时,Silverlight无法对cookie的处理方式进行大量控制。它保留了用户在浏览器中配置的设置。

您可能值得编辑HOSTS文件并将您的IP地址映射到“myhost.mydomain.com”之类的名称(是的,您可以选择您喜欢的内容)。现在使用此主机名访问您的本地站点。

在IE下,localhost被放置在与更广泛的互联网不同的区域中,当您从一个区域跨越到另一个区域时,您可能会遇到一些奇怪的限制。使用上述FQDN应将您的网站放在互联网区域。这将至少消除区域问题作为此问题的根源。

另一项测试将是使用Firefox。