401 未经授权的 DELETE 请求通过 Ajax 到 Laravel 中的 RESTful API
401 未经授权的 DELETE 请求通过 Ajax 到 Laravel 中的 RESTful API
我使用laravel controllers创建了一个RESTful API。我有一个PhotosController
,其中有一个destroy($id)
方法用于删除资源。我还有一段javascript代码,用于向我的应用程序发送DELETE
请求。结果应该是删除具有$id
id的照片。但是laravel没有将我的请求路由到destroy
方法,而是发送了一个401 Unauthorized错误。
问题是我想通过Ajax
向我的应用程序发送DELETE
请求,但是laravel不允许我的请求被路由!
routes.php文件:
Route::resource('photos', 'PhotosController');
destroy方法:
public function destroy($id) { try{ unlink($_SERVER["DOCUMENT_ROOT"].'/uploads/doctors/' . $id); Session::forget('photo'); $msg = Notification::where('flag', 's')->where('code', 'user-update-delete-photo-gallery')->first()->msg; return Response::json(array('success' => $msg)); }catch (Exception $e){ App::abort(500, $e->getMessage()); } }
我的Ajax请求:
$.ajax( { url: "/photos/" + name, method : "DELETE", // Or POST : result is the same data :{ _token : $("input[name=_token]").val(), _method : 'DELETE' }, success: function(data, textStatus, jqXHR ){ parent.replaceWith(""); toastr.success(data['success']); $("#overlay").hide(); }, beforeSend : function(jqXHR, settings ){ $("#overlay").show(); }, error : function(jqXHR, textStatus, errorThrown ){ toastr.error(jqXHR.responseText); $("#overlay").hide(); } } );
感谢您的帮助。
401 Unauthorized DELETE request to RESTful API in laravel via Ajax
问题原因:
这段代码的目的是通过AJAX删除一个资源,但是当执行删除操作时,出现了401 Unauthorized错误。这个错误表示用户没有权限执行删除操作。
解决方法:
要解决这个问题,需要检查以下几个可能的原因:
1. 检查用户是否有权限执行删除操作。可以通过验证用户的身份或者角色来确定用户是否有权限执行该操作。
2. 检查路由是否正确。确认路由是否正确配置,并且在AJAX请求中使用了正确的路由。
3. 检查用户是否已经登录。如果用户没有登录,可能会导致未经授权的请求。确保在执行删除操作之前用户已经成功登录。
4. 检查CSRF令牌。如果您在应用程序中使用了CSRF保护,确保在AJAX请求中包含正确的CSRF令牌。
根据上述代码,以下是可能的解决方法:
1. 确保用户有权限执行删除操作,并且已经登录。
2. 检查AJAX请求中的路由是否正确,并且确保在AJAX请求中使用了正确的路由。
3. 如果您在应用程序中使用了CSRF保护,请确保在AJAX请求中包含正确的CSRF令牌。
以上是解决401 Unauthorized DELETE request to RESTful API in laravel via Ajax问题的可能原因和解决方法。通过检查用户权限、路由配置和CSRF令牌,可以解决该问题。