دسته بندی ها
17:47 1403/06/05

خطای put status code : 405 method not allowed هنگام Update

مشخصات سوال کننده :
کاربر : Mostafahemat     امتیاز کاربر : 5     رتبه کاربر : 110
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 959
3 نظر
saedbfd : دلیل اینکه پروژتون رو روی دو سرور مجزا قرار دادید چی هست ؟

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 08:48 1403/06/06
Mostafahemat : سلام دقیق تر بخوام بگم. هر دو پروژه روی یک سرور با پرت های مختلف 9595 و 7575 پابلیش شده و سرور دیتابیس جدا میباشد. دلیل این امر هم پشتیبانی نکردن سرور داده از core 7 میباشد

امتیاز کاربر : 5   رتبه کاربر : 110   تاریخ ثبت : 05:57 1403/06/06
Mostafahemat : مرورگر هم در سربرگ network --- header -- به صورت زیر پیام میده... request: http//192.168.89.25:7575 request method: put status code:405 method not allowed referres policy: strict-origin-then-cross-origin

امتیاز کاربر : 5   رتبه کاربر : 110   تاریخ ثبت : 06:17 1403/06/06
ادامه نظرات ...
هوش مصنوعی

پاسخ هوش مصنوعی

خطای 405 (Method Not Allowed) معمولاً به این معنی است که سرور درخواست HTTP را که تلاش می کنید استفاده کنید، پشتیبانی نمی کند. در این مورد خاص، ممکن است به دلیل پیکربندی سرور یا عدم وجود متد به کاررفته در API باشد.

چند نکته برای بررسی:

  • اطمینان حاصل کنید که URL مورد نظر برای به روزرسانی (Update) درست است و در سرور پیاده سازی شده است.
  • وب سرور شما (مثلاً Apache یا Nginx) را بررسی کنید که آیا این درخواست برای متد PUT یا PATCH مجاز است یا خیر.
  • در صورت استفاده از Apache، مطمین شوید که ماژول mod_rewrite فعال است و تغییر مسیر به درستی پیکربندی شده است.

همچنین، می توانید از تحویل دهنده های RESTful استفاده کنید که به درستی متدها را برای پاسخ به درخواست ها مدیریت کنند. در نهایت، برگشت به لاگ های سرور ممکن است اطلاعات مفیدی درباره خطا فراهم کند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 08:56 1403/06/06

دوست گرامی شما بهتره کدهایی هم که نوشتید به طور خلاصه قرار بدید. اگر شما پروژتون به صورت api هست و از پروژه فرانت به سمت پروژه بک اند request ارسال میشه باید یک نکته رو دقت کنید.

آیا در پروژه بک اند از Authorize استفاده کردید ؟؟ در این صورت باید یک توکن حاوی Authorize هم همراه درخواست ارسال کنید :

$.ajax({
    type: 'Post',
    url: 'yourUrl',
    headers: { 'Authorization': $("#token").html().trim() },
    dataType: 'json',
    success: function (xhr) {
        if (xhr.statusCode == '200') {
            alert('موفق');
        }
    }
})

در دستور بالا توکن هم ارسال شده. این توکن وقتی شما لاگین می کنید باید از سمت سرور دریافت بشه و هر جا قصد ارسال درخواست داشتید مجددا به سمت سرور ارسال بشه.

ویرایش شده در سه شنبه 6 شهریور 1403 ساعت 21:32:13
به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
4 نظر
Mostafahemat : بنده این کار رو کردم. تمام پروژه دارای دسترسی میباشد و همه درخواست ها به همراه توکن ارسال میشه. بخوام دقیق تر بگم دستوراتی که به صورت post ارسال میشه درست کارمیکنه. که این دست از دستورات برای add کردن داده ها در پروژه استفاده میشه. اما در دستوراتی که به صورت put برای آپدیت داده های قبلی استفاده میشه خطای 504 میده.

امتیاز کاربر : 5   رتبه کاربر : 110   تاریخ ثبت : 06:02 1403/06/06
fateme : شما برای دستورات Update هم از همون Post استفاده کنید. فکر نمیکنم مشکلی داشته باشه. تست کنید نتیجه رو بفرمایید.

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 09:28 1403/06/06
Mostafahemat : سلام دمتون گرم. مشکل حل شد. طبق فرمایش شما فقط کافی بود به جای Put از Post استفاده کنم. فقط یک سوال: آیا میشه همیشه و همه جا این جایگزینی رو انجام داد و اگر میشه پس چه تفاوتی در Put و Post هست؟

امتیاز کاربر : 5   رتبه کاربر : 110   تاریخ ثبت : 04:17 1403/06/07
fateme : بله شما میتونید در اکثر موارد از Post استفاده کنید. دقت کنید خود Put یک مشتق از Post هست.

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 09:43 1403/06/08
ادامه نظرات ...
پاسخ دهنده : pedram_khan 21:36 1403/06/06

احتمالا در دستورات ajax فیلد content-Type رو مقدار ندادید یا اشتباه مقدار دادید. 

$.ajax({
    type: 'Put',
    url: 'yourUrl',
    headers: { 'Authorization': $("#token").html().trim() },
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    success: function (xhr) {
        if (xhr.statusCode == '200') {
            alert('موفق');
        }
    }
})

 

به این پاسخ امتیاز بدهید    0
امتیاز: 277 رتبه: 6
1 نظر
Mostafahemat : سلام مشکل حل شد. طبق فرمایش کاربر fateme فقط کافی بود به جای Put از Post استفاده کنم. تشکر

امتیاز کاربر : 5   رتبه کاربر : 110   تاریخ ثبت : 07:00 1403/06/08
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود