ASP.NET后台代码实现XmlHttp跨域访问(转载)

简介:

最近项目需要实现XmlHttp的POST方法到另一服务器上的页面进行数据的更新,可是IE会提出“该页正在访问其控制范围之外的信息,是否继续?”等警告信息,而在其他浏览器上直接禁止掉,GOOGLE一下原来是XmlHttp的跨域访问问题,找了很多资料,说是提供很多解决方案,可是都没有用处。

  原来由于浏览器的安全限制,网络连接的跨域访问时不被允许的。我们不能在浏览器端直接使用AJAX来跨域访问资源,但是在服务器端是没有这种跨域安全限制的。所以,我们只需要让服务器端帮我们完成“跨域访问”的工作,然后直接获取服务器端“跨域访问”的结果就可以了。分享下我的解决办法,希望能有所帮助。^_^

  CertCheck.aspx:

using MSXML2;
namespace CA2
{
public partial class CertCheck : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request["resultid"] != null)
{
string s = Request["resultid"];
string[] result = s.Split('@');
Label1.Text = result[1];
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.Load("VBR.xml");
System.Xml.XmlElement RegNode = xmlDoc.CreateElement("Id");
RegNode.InnerText = result[0];
xmlDoc.DocumentElement.AppendChild(RegNode);
RegNode = xmlDoc.CreateElement("Serial");
RegNode.InnerText = result[1];
xmlDoc.DocumentElement.AppendChild(RegNode);
MSXML2.XMLHTTP xh = new MSXML2.XMLHTTPClass();
xh.open("POST", "http://222.19.211.119/CAProcess.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;
}
}
}
}
}
}


VBR.xml:

<?xml version="1.0"?>
<root>
</root>


PS: 在xh.send()中可以直接写参数,

  CertCheck.aspx:

using System.Net;
using System.IO;
namespace CA2
{
public partial class CertCheck : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request["resultid"] != null)
{
string s = Request["resultid"];
string[] result = s.Split('@');
Label1.Text = result[1];
string param = "Id="+result[0]+"&Serial="+result[1];
byte[] bs = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://222.19.211.119/CAProcess.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();
}
}
}
}


CAProcess.aspx

protected void Page_Load(object sender, EventArgs e)
{
int Id = int.Parse(Request.Form["Id"]);
string Serial = Request.Form["Serial"];
//
Response.Write(Id.ToString()+" "+Serial);
Response.End();
}




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/archive/2010/02/26/1674010.html,如需转载请自行联系原作者 

相关文章
|
3月前
|
API
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
|
27天前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
22 1
|
1月前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
40 2
|
1月前
|
前端开发 JavaScript C#
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
|
2月前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
245 6
|
3月前
|
算法 Java 测试技术
java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
|
3月前
|
Kubernetes 监控 Devops
【独家揭秘】.NET项目中的DevOps实践:从代码提交到生产部署,你不知道的那些事!
【8月更文挑战第28天】.NET 项目中的 DevOps 实践贯穿代码提交到生产部署全流程,涵盖健壮的源代码管理、GitFlow 工作流、持续集成与部署、容器化及监控日志记录。通过 Git、CI/CD 工具、Kubernetes 及日志框架的最佳实践应用,显著提升软件开发效率与质量。本文通过具体示例,助力开发者构建高效可靠的 DevOps 流程,确保项目成功交付。
76 0
|
3月前
|
API
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
|
3月前
|
微服务 API Java
微服务架构大揭秘!Play Framework如何助力构建松耦合系统?一场技术革命即将上演!
【8月更文挑战第31天】互联网技术飞速发展,微服务架构成为企业级应用主流。微服务将单一应用拆分成多个小服务,通过轻量级通信机制交互。高性能Java Web框架Play Framework具备轻量级、易扩展特性,适合构建微服务。本文探讨使用Play Framework构建松耦合微服务系统的方法。Play采用响应式编程模型,支持模块化开发,提供丰富生态系统,便于快速构建功能完善的微服务。
49 0
|
3月前
|
SQL 开发框架 .NET
代码更简洁,开发更高效:从零开始使用Entity Framework Core与传统ADO.NET构建数据持久化层的比较
【8月更文挑战第31天】在.NET平台上开发数据驱动应用时,选择合适的ORM框架至关重要。本文通过对比传统的ADO.NET和现代的Entity Framework Core (EF Core),展示了如何从零开始构建数据持久化层。ADO.NET虽强大灵活,但需要大量手写代码;EF Core则简化了数据访问,支持LINQ查询,自动生成SQL命令,提升开发效率。从创建.NET Core项目、定义数据模型、配置`DbContext`到执行数据库操作,EF Core提供了一套流畅的API,使数据持久化层的构建变得简单直接。
36 0

相关实验场景

更多