首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET 微信網頁授權跨域跳轉:A 站獲取用戶信息 POST 回 B 站的實現方案

     編輯:程式設計綜合問答

業務場景

  • 微信公眾號僅允許配置一個「授權回調域名」(A 站)。
  • 其他業務系統(B 站)需獲取用戶身份,流程:B 站 → 跳轉 A 站授權 → A 站拿到用戶信息 → POST 回 B 站頁面並在 Load 事件中接收。
  • 用戶信息較長,不適合 GET 傳參。

核心難點

跨域 POST 表單提交後,B 站後台 Page_Load 中 Request.Form 為空,或因跨域策略被瀏覽器攔截。

解決方案

方案一:服務端代理(推薦)

  1. B 站生成帶 state 參數的授權鏈接跳轉 A 站:https://A.com/auth?redirect=B.com/callback&state=xxx
  2. A 站授權成功後,服務端直接用 HttpClient POST 到 B 站回調接口(B.com/callback),攜帶用戶信息與 state。
  3. B 站回調接口驗證 state,存儲用戶信息至 Session/Redis,返回成功頁面或重定向前端。

方案二:前端 Form Auto-Submit(次選)

<!-- A 站授權成功頁面 -->
<form id="postForm" action="https://B.com/callback" method="post">
    <input type="hidden" name="openid" value="@Model.OpenId" />
    <input type="hidden" name="nickname" value="@Model.NickName" />
    <!-- 其他字段 -->
</form>
<script>document.getElementById('postForm').submit();</script>

需確保 B 站接口允許跨域 POST(配置 CORS 或同域部署)。

關鍵點

  • 避免在前端暴露敏感信息,優先服務端直連。
  • state 參數防 CSRF,綁定用戶會話。
  • 微信授權 scope=snsapi_userinfo 才能獲取昵稱等詳細信息。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved