ارسال پارامتر بصورت post و redirectکردن به سایت دیگر در MVC Core

آخرین بروز رسانی: 1400/04/21

بعضی وقتها پیش میاد که میخای یکسری پارامتر بفرستی به یه سایت دیگه بصورت post . ولی نمیخای پارامترها رو بصورت hidden یا هر چیز دیگه ای تو صفحه html قرار بدی که کابربران نتونن با inspect گرفتن ببینن. ( مثال بارزش برای ارسال پارامترها به درگاه پرداخت بانکهاست )
خوب راهش اینه که این کار رو بصورت سرورساید انجام بدی. 
پس تو صفحه html خودت یه فرم ساده مثل کد زیر مینویسی

 <form action="/RedirectAndPostData" method="post">
           <input type="hidden" name="id" value="55" />
          <button type="submit">پرداخت</button>
 </form>

و تو Controller کد زیر رو اضافه میکنی و تمام

        public async Task RedirectAndPostData(int id)
        {
            var modelToPost =await FetchYourModelFromDbORMake(id);
           
            var basnkUrl = "https://bankToPay.com";

            HttpResponse response = HttpContext.Response;
            response.Clear();

            StringBuilder s = new StringBuilder();
            s.Append("<html>");
            s.AppendFormat("<body onload='document.forms[\"form\"].submit()'>");
            s.AppendFormat("<form name='form' action='{0}' method='post'>", basnkUrl);
            s.AppendFormat("<input type='hidden' name='{0}' value='{1}' />", "Amount", modelToPost.Amount);
            s.AppendFormat("<input type='hidden' name='{0}' value='{1}' />", "TerminalId", "TerminalId--");
            s.AppendFormat("<input type='hidden' name='{0}' value='{1}' />", "ResNum", modelToPost.Id);
            s.AppendFormat("<input type='hidden' name='{0}' value='{1}' />", "RedirectURL", "http://localhost:19179/invoice/BankResult");
            s.AppendFormat("<input type='hidden' name='{0}' value='{1}' />", "CellNumber", modelToPost.CellPhone);
            s.Append("</form></body></html>");
            await response.WriteAsync(s.ToString());
        }

 همانطور که میبینی کلی پارامتر post میکنی به سرور (مثلن بانک) بدون اینکه تو فرم چیزی دیده بشه بجز یه id (که حتی اونم میشه براش راه حل داد . اینجا فرض شده اون و کاربران با inspect ببین هم مهم نیست)

نظر دهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی علامت گذاری شده اند *