【问题标题】:Silverlight not sending cookies in cross-domain browser requestsSilverlight 不在跨域浏览器请求中发送 cookie
【发布时间】:2011-01-05 13:27:36
【问题描述】:

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

我的浏览器有一组用于某个域的 cookie,我希望在发出所述 HTTP 请求时使用这些 cookie。

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

当我将 xap 上传到 http:// somedomain/ 并从那里加载它(这样 HTTP 请求不是跨域的)时,我看到我的所有浏览器/IE cookie 都已传输,并且所有内容没问题。

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

提前致谢!

【问题讨论】:

  • “somedomain”真的是“somedomain”的形式还是“somedomain.com”的形式?

标签: silverlight cookies cross-domain


【解决方案1】:

花了几个小时来解决类似的问题。原来该站点不在受信任的站点中。这似乎阻止了 Silverlight SharePoint ClientContext 用来发送所需 cookie 的 Browser WebRequest(在我的例子中是 FedAuth)。

【讨论】:

    【解决方案2】:

    实际上,在使用浏览器 HTTP 堆栈时,Silverlight 并不能很好地控制 cookie 的处理方式。它保留了用户在浏览器中配置的设置。

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

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

    另一个测试是使用 Firefox。

    【讨论】:

    • 谢谢,看来不同的区域确实是造成这种情况的原因。使用虚拟 FQDN,一切正常。
    猜你喜欢
    • 1970-01-01
    • 2019-02-11
    • 2017-03-07
    • 2014-09-21
    • 2018-05-19
    • 2019-11-05
    • 1970-01-01
    • 2022-01-21
    • 2016-08-05
    相关资源
    最近更新 更多