首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 後台代碼實現 XmlHttp 跨域訪問

     編輯:關於ASP.NET

伺服器端代理突破瀏覽器同源策略限制

問題背景

瀏覽器禁止 JavaScript XmlHttpRequest 跨域 POST,IE 跳警告、其他瀏覽器直接封鎖。

解決原理

**伺服器端無同源限制**。由 ASP.NET 後台代理發送跨域請求,再將結果回傳給前端。

實作代碼: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];

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("VBR.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);

                XMLHTTP xh = new XMLHTTPClass();
                xh.open("POST", "https://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 && xh.status == 200)
                    Label1.Text += "###" + xh.responseText;
            }
        }
    }
}

VBR.xml 範本

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

關鍵點

  • 使用 MSXML2.XMLHTTP (COM) 於伺服器端發送同步 POST。
  • 組裝 XML 請求體,設定 Content-Type 與編碼。
  • 同步模式 (false) 簡化流程,高併發建議改非同步 + 回呼。
  • 前端只需呼叫此頁面,繞過瀏覽器跨域限制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved