我一直在研究一项要求,该要求涉及网站获取/处理存储在不同域中的数据。除了在另一台服务器上启用CORS以允许我从其他域获取和修改数据外,似乎没有其他方法。但是,这导致Office 365应用程序出现了一些问题,我不得不采用其他方法。
该方法是使用postMessage
与目标域上正在运行的页面上的隐藏iframe
对话(不是一种好方法,但我坚持要使用它)。源页面将消息和有关REST调用的信息一起发布到隐藏的iframe
,后者代表父页面发出请求,并使用postMessage
返回结果。
一切正常,除了在iPhone上使用网站时。原来,在目标alert
内运行的脚本中放置iframe
个调用可以使其正常工作,但是删除alert
调用则使目标iframe
不能进行交叉源网络通话。
我的理论是,由于移动Safari的安全性,为了从运行在不同域上的iframe
进行跨域调用,用户需要至少互动一次以表示同意与嵌入式iframe
。听起来正确吗?
答案 0 :(得分:0)
diodeus-james-macfarlane的评论是我们所能走的最接近的评论,但是iframe被隐藏了,我们不可能放置一个控件来让用户与之交互,即使那仅仅是为了使其起作用
令我惊讶的是,关闭SharePoint网站上的一项设置即可使其正常工作。该设置围绕移动视图兼容性进行,如果没有此设置,则iframe可以发出HTTP请求,与父网页之间收发消息。