javascript - 具有集成安全性的跨域 POST

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

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

我的要求是:

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

完成此任务的最佳方法是什么?

我尝试过的:

理想情况下,这可以通过简单的 AJAX 调用来完成。然而,当前标准不支持发送二进制数据(在 XMLHttpRequest Level 2 标准中支持,但尚未在 IE 中实现)。

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

想法:

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

最佳答案

使用代理似乎是唯一适合您的情况。如果你想发出一个获取请求,那么可以使用 JSONP 来完成。前提是服务器支持 JSONP .制作<iframe>服务器应该将 header 发送为

Access-Control-Allow-Origin:* 

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

关于javascript - 具有集成安全性的跨域 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935318/

相关文章:

Javascript 通过引用或值分配数组元素

javascript - 编写此 JavaScript 的 jQuery 方式是什么?

javascript - jQuery 和 Express - 混淆了成功和错误

javascript - Jquery调用功能(updatepanel内部)不流畅

php - 不刷新提交表单的最简单方法

javascript - 相对路径2在javascript中升级

javascript - bxslider : how to make pause in `onSlideBefore` ?

asp.net - 类型为 'ctl00_TextBox1'的控件 'TextBox'必须放置在带有runat = server的表单标记中

c# - OpenID 发现 URL 列表

ASP.NET Web API 在同一个 Web 应用程序中的两个 API 之间以不同的方式格式化日期时间