html的页面怎样直接跨域访问,【HTML】iframe跨域访问问题

本文介绍了在Chrome浏览器中,本地HTML文件通过iframe加载时出现的跨域问题及自适应高度失效的情况。作者发现这可能是由于file协议引起的跨域限制。文中探讨了iframe跨域访问的常见解决方案,包括同主域下的跨域设置、P3P头解决cookie跨域、利用postMessage等,并提到了在IE中处理跨域丢失Session的方法。文章还提及了自定义iframe高度的挑战,由于JS跨域限制,实现不同域的子页面返回高度给父页面成为难点。
摘要由CSDN通过智能技术生成

概述

本地同一浏览器访问本地HTML文件和访问服务器端HTML文件,本地Iframe没有自适应高度,而服务器端的Ifrane自适应了高度。

1.问题重现:

Chrome 版本 41.0.2272.101 (64-bit)

OS:Win8.1

Chrome访问服务器端HTML文件呈现的结果

9acc7ba87d16a583349923c78c763e62.png

Chrome访问本地HTML文件呈现的结果

965d40fe542937fd6da676da70ed12f0.png

本地访问的HTML文件Iframe没有根据Iframe里面的页面类容自适应高度

2.Iframe自适应高度代码

在index.html文件中间中添加Iframe页面,页面加载时,加载src指定的文件路径

frameborder="0" marginwidth="0" marginheight="0" scrolling="no">

JS脚本自适应调整Iframe高度

function iFrameHeight(id) {

var ifm = document.getElementById(id);

var

在 ASP.NET 中,可以使用代理页面来解决 iframe 跨域访问问题。代理页面的作用是将客户端请求发送到目标网站,然后将目标网站的响应返回给客户端,从而实现跨域访问。 以下是一个简单的代理页面示例: ```c# <%@ Page Language="C#" %> <%@ Import Namespace="System.Net" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { // 获取目标网站的 URL string targetUrl = Request.QueryString["url"]; // 创建 WebRequest 对象 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetUrl); // 发送请求并获取响应 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // 将响应内容输出到客户端 Response.Clear(); Response.ContentType = "text/html"; using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { Response.Write(reader.ReadToEnd()); } Response.End(); } </script> ``` 在页面中,我们首先获取到客户端传递过来的目标网站 URL,然后创建一个 WebRequest 对象发送请求,获取响应内容,并将响应内容输出到客户端。 使用代理页面时,我们需要将 iframe 的 src 属性设置为代理页面的 URL,同时需要将目标网站的 URL 作为参数传递给代理页面。例如: ```html <iframe src="Proxy.aspx?url=http://www.example.com"></iframe> ``` 这样就可以实现跨域访问了。需要注意的是,代理页面会将客户端的请求转发到目标网站,因此在使用代理页面时需要考虑安全问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值