سلام دوستان یک مشکلی دارم و اون هم این هست که می خواستم بدونم مخفی کردن پارامترها در url در روش get به چه صورتی هست.
توی پروژه ام وقتی که میخوام سبد خرید رو به کاربر نمایش بدم همه پارامترهایی که توی کدها تعریف کردم نمایش داده میشه و زیاد جالب نیست. ضمن اینکه کاربر میتونه خیلی راحت با تغییر مقدار پارامتر ها مثلا تغییر ID کالاهای موجود در سبد خرید رو تغییر بده. به عنوان مثال یکی از url هایی که در پروژه دارم و به کاربر نمایش داده میشه این هست
https://mysite.ir/Home/PackageDeatilsTopayment?packageid=90
همونطوری که میبینید پارامتر packageid=90 هم داره به کاربر نمایش داده میشه و کاربر میتونه با تغییر عدد 90 یک کالای دیگه رو توی سبدش داشته باشه. لطفا بفرمایید نحوه مخفی کردن پارامترها در url در روش get به چه صورتی هست ؟
کلا ما نمیتونیم پارامترها رو در Url در روش Get مخفی کنیم. دلیل این امر هم واضح هست. چون در روش Get پارامترها و مقادیر اونها از طریق آدرس در Url ارسال میشن. بنابراین مخفی کردن پارامتر غیر منطقی هست. اما شاید این سوال براتون پیش بیاد پس چرا بعضی از سایتها دارن این کار رو انجام میدن. نمونه اش هم همین مثالی که خودتون زدید. خب روشهایی برای این کار هست که در ادامه معرفی می کنم خدمتتون.
alert(btoa("category=textile&user=user1")); // ==> Y2F0ZWdvcnk9dGV4dGlsZSZ1c2VyPXVzZXIx
alert(atob("Y2F0ZWdvcnk9dGV4dGlsZSZ1c2VyPXVzZXIx")); // ==> category=textile&user=user1
همونطوری که می بینید در خط اول یک آدرس رو به صورت رمز شده تبدیل کردیم و در خط دوم اون آدرس رو به حالت اولیه برگردوندیم. بنابراین رمز نگاری کردن اولین روش هست. این لینک در مورد رمزنگاری url نمونه هایی رو آورده.
فرض کنید که دستورات html شما به صورت زیر هست. (در این مثال از Asp.net Core استفاده می کنیم.)
<a asp-controller="Home" asp-action="PayView" asp-route-ID="@Model.ID">پرداخت</a>
خب وقتی شما روی دکمه پرداخت کلیک می کنید باید وارد صفحه PayView بشید. همچنین در سمت کنترلر هم باید این اکشن وجود داشته باشه.
بخش کنترلر
[HttpGet]
public IActionResult PayView(int ID)
{
return View();
}
وقتی ویوی PayView باز میشه Url به این شکل هست
https://localhost:5001/Home/PayView?ID=5
تا اینجای کار حالت عادی بود. اما شما فرض کنید به هر دلیلی میخواید Url رو تغییر بدید و همچنین پارامترها رو نمایش ندید. خب باید چیکار کنیم؟
همونطوری که بالاتر گفته شد در درخواست های به روش Get پارامترها و مقادیر اونها از طریق Url ارسال میشن و نمیشه این موضوع رو کاری کرد. بنابراین میایم و کدهامون رو به شکل زیر تغییر میدیم.
در بخش Html
<a asp-controller="Home" asp-action="PayView" asp-route-ID="@Model.ID">پرداخت</a>
خب در این بخش تغییری نسبت به قبل نداریم.
در بخش Controller
[HttpGet]
public IActionResult PayView(int ID)
{
TempData["ID"] = ID;
TempData.keep("ID");
return RedirectToAction("PaymetMoney");
}
[HttpGet]
public IActionResult PaymetMoney()
{
ViewBag.ID = TempData["ID"];
return View("PayView");
}
خب همونطوری که می بینید در این بخش ابتدا به اکشن PayView میایم و در این اکشن ری دایرکت میکنیم به یک اکشن دیگه. که در اکشن دوم هیچ پارامتر ورودی نداریم. ضمنا پارامترها رو هم توسط TempDate به اکشن بعدی ارسال می کنیم و در اکشن دوم توسط یک ViewBag دریافت می کنیم. خب در این حالت Url ما به این صورت در میاد:
https://localhost:5001/Home/PaymentMoney
همونطوری که میبینید ما تونستیم Url که کاربر میبینه رو تغییر بدیم و هیچ پارامتری هم تو این Url نمایش داده نمیشه.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
78
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
111
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
216
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
78
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
111
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|