【问题标题】:Cross-domain POST with integrated security具有集成安全性的跨域 POST
【发布时间】:2011-10-19 14:28:50
【问题描述】:

我运行一个站点 A,我希望能够将数据发布到站点 B,该站点托管在不同的子域上。现在我可以完全访问 A,但根本无法修改 B。

我的要求是:

  • 支持文件上传
  • 在 POST 时不刷新浏览器
  • 使用 Windows 集成安全性
  • 在 IE 7/8 下工作(不需要支持任何其他浏览器)

最好的方法是什么?

我的尝试:

理想情况下,这可以通过简单的 AJAX 调用来完成。但是目前的标准不支持发送二进制数据(XMLHttpRequest Level 2标准支持,IE还没有实现)。

所以下一个最好的方法是 POST 到隐藏的 <iframe> 元素。现在我已经尝试过了,但是站点 B 上的服务器不接受数据。我查看了请求,发现的唯一差异是引用 URL 和集成身份验证。引用 URL 可能必须被欺骗,这无法通过此方法完成。同样由于某种原因,身份验证没有被协商。我不是 100% 确定为什么。

想法:

我正在考虑在我运行的服务器(站点 A)上创建一个代理页面,将请求转发到站点 B。站点 A 也使用集成安全性。我认为这没有任何问题,但我不确定这是否是最好的方法。如果我只是转发请求,会不会有任何身份验证问题?

【问题讨论】:

  • 我会问两个域是否在同一台服务器上。如果是这样,请忘记域并将文件放在您需要的目录中。
  • 不,它们在不同的服务器上。问题是站点 A 和站点 B 都在使用数据。
  • 如果你把文件上传到 C? ...(Amazon S3 还是什么?)

标签: javascript asp.net ajax cross-domain integrated-security


【解决方案1】:

使用代理似乎是唯一适用于您的情况的方法。如果你想发出一个get请求,那么只要服务器支持JSONP,就可以使用JSONP来完成。为了使<iframe> hack 工作,服务器应该将标头发送为

Access-Control-Allow-Origin:* 

这不是你的情况。 所以使用代理似乎是解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多