js,XmlHttp不允许跨域访问的解决方案-通过ASP.NET服务端代理httpproy实现跨域访问|ASP.NET c#实现XmlHttp的跨域访问
项目需要实现XmlHttp的POST方法到另一服务器上的页面进行数据的更新,但IE会提出“该页正在访问其控制范围之外的信息,是否继续?”等警告。
由于浏览器的安全限制,网络连接的跨域访问时不被允许的。我们不能在浏览器端直接使用XmlHttp来跨域访问资源,但是在服务器端是没有这种跨域安全限制的。所以,我们只需要让服务器端帮我们完成“跨域访问”的工作,然后直接获取服务器端“跨域访问”的结果就可以了。(或者通过httpproy代理桥页实现)
1、部份代码示例
先添加引用 ---COM---Microsoft Xml 3.0(或以上版本)
using MSXML2;
MSXML2.XMLHTTP xh = new MSXML2.XMLHTTPClass();
xh.open("POST", http://url/test.aspx, false, null, null);
xh.setRequestHeader("Content-Type", "text/xml");
xh.setRequestHeader("Content-Type", "gb2312");
xh.send(xmlDoc.InnerXml);
if (xh.readyState == 4)
{
if (xh.status == 200)
{
Label1.Text += "###" + xh.responseText;
}
}
2、用HttpWebRequest的实现方法:
using System.Net;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(http://url/test.aspx);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;
Stream reqStream = req.GetRequestStream();
reqStream.Write(bs, 0, bs.Length);
reqStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.GetEncoding("GB2312"));
string content = reader.ReadToEnd();
reader.Close();
myResponse.Close();
Label1.Text += "###" + content.ToString();
注:
请求获得网页源码方法大概有
1.xmlhttp
2.WebClient
3.HttpWebRequest(如需登录采用这个)