.NET與JSP頁面之間訊息通訊(跨域,使用html5的postMessage實現)
最近.NET專案上使用JAVA專案中的jsp頁面,使用到跨域的資訊互動。
jsp端程式碼,通過監聽來自.NET專案所在IP地址,來請求.NET一般處理程式,實現jsp互動資訊儲存到.NET中:
window.addEventListener(`message`, function(event){ // 通過origin屬性判斷訊息來源地址 if (event.origin == `http://192.168.11.195`) { if(event.data==`1`){ var xmlStr = getXmlStr(); var sysId1= `1111222`; var userId1 = `22211112`; var menus1 = xmlStr; var callback1=`?`; var url = `http://192.168.11.195/BPMS/WebService/MessageExchange.ashx`; $.ajax({ url:url, data: {sysId:sysId1,userId:userId1,menus:menus1,callback:callback1}, dataType:`jsonp`, type:`post`, processData: true, success:function(data){ alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); } }); } } }, false);
.NET頁面程式碼,主要是通過向jsp端頁面傳送帶標記請求資訊:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Role_InfoOuter.aspx.cs" Inherits="AT.Web.ATBase.SysUser.Role_InfoOuter" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="../../Themes/Scripts/jquery-1.8.2.min.js"></script> <script type="text/javascript"> $(function () { $("#btn").click(function () { test(); }); function test() { var ifr = document.getElementById(`iframe`); var targetOrigin = `http://192.168.11.10:8080`; ifr.contentWindow.postMessage(`1`, targetOrigin); }; }); </script> </head> <body> <form id="form1" runat="server"> <div> <iframe id="iframe" src="http://192.168.11.10:8080/ATMxgraphBS/grapheditor/Atgraphright.jsp"></iframe> <input type="button" value="儲存" id="btn" /> </div> </form> </body> </html>
MessageExchange.ashx程式碼如下:
using AT.DataBase.SqlServer; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; namespace AT.Web.WebService { /// <summary> /// MessageExchange 的摘要說明 /// </summary> public class MessageExchange : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string callback = (context.Request["callback"] ?? "").ToString(); string sysId = (context.Request["sysId"] ?? "").ToString(); string userId = (context.Request["userId"] ?? "").ToString(); string menu = (context.Request["menus"] ?? "").ToString(); string msg = SaveMessage(sysId, userId, menu); context.Response.Write(msg); context.Response.End(); } /// <summary> /// 儲存業務邏輯 /// </summary> /// <param name="sysId"></param> /// <param name="userId"></param> public string SaveMessage(string sysId, string userId, string menu) { SqlServerHelper db = new SqlServerHelper("Server=192.168.11.201;Database=AT_UnifiedAuthorityDB;Uid=sa;Pwd=apesm;"); StringBuilder sb = new StringBuilder(); sb.Append("insert into Test(T1,T2,T3) values(`" + sysId + "`,`" + userId + "`,`" + menu + "`)"); int cnt = db.ExecuteBySql(sb); if (cnt > 0) { return "OK"; } else { return "NO"; } } public bool IsReusable { get { return false; } } } }
相關文章
- 用postMessage實現跨域通訊跨域
- 父子頁面之間跨域通訊的方法跨域
- 不同頁面通訊與跨域跨域
- postMessage實現頁面通訊介紹
- 使用 postMessage 解決 iframe 跨域通訊問題跨域
- 利用Storage Event實現頁面間通訊
- 在如何實現兩個JBoss之間的訊息通訊?
- 教你如何實現頁面間的資料通訊
- HTML5 window.postMessage 與跨域HTML跨域
- 實現兩個視窗通訊方法之postMessage
- js訊息訂閱和釋出實現元件之間通訊JS元件
- 使用HTML5中postMessage 實現ajax中的POST跨域問題HTML跨域
- 使用HTML5中postMessage實現Ajax中的POST跨域問題HTML跨域
- 跨頁面通訊的各種姿勢
- 百度小程式之間的頁面通訊
- sharedWorker 實現多頁面通訊
- ASP.NET 多語言的實現(後臺訊息+前臺訊息+頁面自動繫結)ASP.NET
- 如何優雅的實現訊息通訊?
- 實現不同程式之間的通訊
- 如何實現瀏覽器標籤頁之間的通訊瀏覽器
- IoT裝置與手機App之間如何實現實時訊息通訊——業務場景最佳實踐APP
- bbossmvc結合jsonp實現跨站跨域應用間通訊功能介紹SSMMVCJSON跨域
- 跨源通訊、跨域訪問跨域
- 實現多個標籤頁之間通訊的幾種方法
- 程式間通訊——XSI IPC之訊息佇列佇列
- 程式間通訊--訊息佇列佇列
- 使用AIDL實現程式間的通訊AI
- linux 程式間通訊之System V 訊息佇列Linux佇列
- 面試官:前端跨頁面通訊,你知道哪些方法?面試前端
- 程序間通訊(2)-訊息佇列佇列
- 頁面間通訊與資料共享解決方案簡析
- VC自定義訊息postmessage用法(訊息響應函式)函式
- Android程式間通訊–訊息機制及IPC機制實現薦Android
- Linux 下的程式間通訊:使用管道和訊息佇列Linux佇列
- 詳解 CmProcess 跨程式通訊的實現
- 使用WM_COPYDATA訊息通訊
- Flutter與android之間的通訊FlutterAndroid
- 我最喜歡的程式之間通訊方式-訊息匯流排