读书人

关于AJAX跨站点访问有关问题

发布时间: 2013-06-19 10:26:41 作者: rapoo

关于AJAX跨站点访问问题
平时用ajax都是一个项目下面用相对路径,我想试下把它url改成其他站点会怎么样。所以我在本地建了2个网站,用ajax去访问另外一个站点的文件,调试的确执行了另外一个站点的文件,然后返回输出结果,但是获取的结果为空,这怎么回事,怎么去访问另外一个站点然后得到输出结果呢?这就是所谓的ajax跨域访问吗?
<script>
$(document).ready(function () {
$("#btn").click(function () {
$.ajax( {
url: "http://localhost:9507/WebSite1/ashx/Handler.ashx",
success: function (data) {

alert(data.toString());
}
});
});

});
</script>
[解决办法]
url: "AjaxGeturl.aspx?url=http://localhost:9507/WebSite1/ashx/Handler.ashx",

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml;
using System.Net;
using System.IO;
using System.Text;
namespace NetCMS.Web
{
public partial class AjaxGeturl : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string url = string.Empty;
url = Request.QueryString["url"];
Response.Write(GetResStr(url, "utf-8"));
Response.End();
}


}
string GetResStr(string url, string Encod)
{
WebRequest WReq;
WebResponse WResp;
StreamReader sr;
WReq = WebRequest.Create(url);
WResp = WReq.GetResponse();
sr = new StreamReader(WResp.GetResponseStream(), Encoding.GetEncoding(Encod));
string retValue = sr.ReadToEnd();
sr.Close();
return retValue;
}
}

}
[解决办法]
这个就是传说中的跨域访问。

浏览器为了保护其他网站的资源(服务)而采用的保护措施。

可以跨域,只有做服务端允许就行。
[解决办法]
Ajax不允许跨域,就算用Iframe加载了跨域的站点也不用修改其dom,如果你这里要做我这里提供一个思路,
编写一个 跨域页面通过调用WebClient把目标页下载下来, 输出 ,Ajax请求我的跨域加载的页面获取输出html
. 我之前有试过 次方法可行 不过效果也一般.

读书人网 >asp.net

热点推荐