为了在包含许多参数的表单中发布AJAX表单,我使用的是创建一个解决方案,iframe
通过POST将表单发布到它,然后访问其iframe
内容.具体来说,我正在访问这样的内容:
$("some_iframe_id").get(0).contentWindow.document
我测试了它,它工作.
在某些页面上,我开始收到"访问被拒绝"错误.据我所知,如果iframe是从同一个域提供的,那么这不应该发生.
我很确定它之前有效.有人有线索吗?
如果我不够清楚:我发布到同一个域名.所以这不是跨域请求.我只在IE上测试.
PS我不能使用简单的ajax POST查询(不要问......)
自己解决了!
问题是,即使正在发送正确的响应(通过Fiddler验证),它也会被发送一个HTTP 500错误代码(而不是200).
事实证明,如果发送带有错误代码的响应,IE将iframe
使用从disk(res://ieframe.dll/http_500.htm
)加载的错误消息替换该内容,并导致跨域访问被拒绝错误.
请注意与iFrame相关的安全限制,例如跨域限制(又称CORS).以下是与CORS相关的3个常见错误:
加载具有不同域的iFrame.(例如:打开" www.foo.com ",而顶部框架是" www.ooof.com ")
使用不同的端口加载iFrame:iFrame的URL 端口与顶部框架的端口不同.
不同协议:通过HTTPS加载iFrame资源,而父帧使用HTTP.