我有一个Silverlight3控件,它向http:// somedomain/发出跨域HTTP请求。我正在使用浏览器HTTP堆栈发出此请求。在某些域上有一个适当的clientaccesspolicy.xml。
我的浏览器有一组cookie,我希望在发出上述HTTP请求时使用这些cookie。
然而,当我的Silverlight控件从http:// localhost/加载时,我的cookie似乎没有被传输(我正在使用Fiddler跟踪HTTP流量)!
但是,当我将xap上传到http:// somedomain/并从那里加载它时(这样HTTP请求就不是跨域的),我看到针对某些domain的所有浏览器/IE cookie都被传输了,一切都很正常。
这是故意的行为吗?我检查过MSDN,它显示浏览器cookie总是被传输,不管请求是否是跨域的。
提前感谢!
发布于 2010-01-16 00:42:26
实际上,当使用浏览器HTTP堆栈时,Silverlight并不能很好地控制如何处理cookie。它保留了用户在浏览器中配置的设置。
这可能值得你编辑你的主机文件,并把你的IP地址映射到一个像"myhost.mydomain.com“这样的名字(是的,你可以选择任何你喜欢的)。现在使用此主机名访问您的本地站点。
在IE下,本地主机被放置在与更广泛的互联网不同的区域中,当您从一个区域切换到另一个区域时,您可能会遇到一些奇怪的限制。使用如上所述的FQDN应将您的站点放入internet区域。这至少会消除区域问题作为这个问题的根源。
另一个测试是使用Firefox。
发布于 2012-06-28 03:17:41
花了几个小时解决类似的问题。原来这个网站不在受信任的网站里。这似乎阻止了Silverlight SharePoint ClientContext用来发送所需cookie的浏览器WebRequest (在我的例子中是FedAuth)。
https://stackoverflow.com/questions/2072480
复制相似问题