401 通过 Ajax 对 Laravel 中的 RESTful API 进行未经授权的 DELETE 请求

2023-12-11

我使用创建了一个宁静的 APIlaravel控制器。我有一个PhotosController其中有一个destroy($id)资源删除方法。我也有一块javascript发送的代码DELETE向我的应用程序请求。结果应该是删除照片$idID。但 laravel 不会将我的请求路由到destroy方法。相反,它发送一个401 未经授权 error.

事情是我想发送DELETE通过向我的应用程序请求Ajax, but laravel不允许我的请求被路由!

路线.php 文件:

Route::resource('photos', 'PhotosController');

销毁方法:

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();
        }
    }
);

感谢您的帮助。


我一直在 Laravel 应用程序中执行此类操作,没有出现任何问题。此代码允许用户通过 AJAX 删除资源,同时首先显示引导确认对话框。代码按照事件发生的顺序排列。

查看并删除资源

<a class="delete-plan" href="{{ route('admin.plans.destroy', $plan['id']) }}" data-redirect="{{ route('admin.plans.index') }}" data-plan-name="{{ $plan['name'] }}" data-lang="billing.plans">
    <i class="fa fa-trash fa-lg"></i>
</a>

JQUERY 提示确认模式

$('.delete-plan').on('click', function(e) {
    e.preventDefault();

    var data = {
        'route':        $(this).attr('href'),
        'redirect':     $(this).data('redirect'),
        'modal_title':  'Delete Plan',
        'content_view': 'Are you sure you want to delete plan: <strong>' + $(this).data('plan-name') + '</strong>?',
        'lang':         $(this).data('lang')
    };

    loadDestroyModal(data);
});

function loadDestroyModal(data) {
    $.get('/ajax/destroy-modal', { data: data }, function(modal) {
        $('body').append(modal);
        $('#destroy-modal').modal('show');
    });
}

AJAX控制器

// routed by /ajax/destroy-modal
public function destroyModal() {
    $data = Input::get('data');

    $params = [
        'route'    => $data['route'],
        'redirect' => $data['redirect'],
        'title'    => $data['modal_title'],
        'content'  => $data['content_view'],
        'lang'     => $data['lang']
    ];

    return View::make('_helpers.modal-destroy', $params);
}

销毁确认模态 (_helpers.modal-destroy)

<div id="destroy-modal" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">
                    <span aria-hidden="true"><i class="fa fa-times"></i></span>
                    <span class="sr-only">Close</span>
                </button>
                <h4 class="modal-title">{{ $title }}</h4>
            </div>
            <div class="modal-body">
                {{ $content }}
            </div>
            <div class="modal-footer">
                <button id="modal-confirm" type="button" class="btn btn-primary" data-route="{{ $route }}"
                data-redirect="{{ $redirect }}" data-lang="{{ $lang }}">Confirm</button>
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

JQUERY处理销毁方法和重定向Flash消息

$('body').on('click', '#destroy-modal #modal-confirm', function(e) {
    var redirect = $(this).data('redirect');
    var lang     = $(this).data('lang');

    $(this).html('<i class="fa fa-spinner fa-spin"></i> Please Wait');

    $.ajax({
        'url':     $(this).data('route'),
        'type':    'DELETE',
        'success': function(response) {
            if (response) {
                redirectWithFlashMessage(redirect, 'destroy', 'success', lang);
            } else {
                redirectWithFlashMessage(redirect, 'destroy', 'errors', lang);
            }
        }
    });
});

计划控制员

public function destroy($id)
{
    try
    {
        Stripe::plans()->destroy(['id' => $id]);

        return Response::json(TRUE);
    }
    catch (Exception $e)
    {
        return Response::json(FALSE);
    }
}

JQuery 重定向

function redirectWithFlashMessage(redirect, type, status, lang) {
    var params = {
        type:   type,
        status: status,
        lang:   lang
    };

    $.get('/ajax/flash', params, function(response) {
        window.location.href = redirect;
    });
}

AJAX 控制器(使用 Flash 重定向)

public function flashData() {
    $message_type = 'success' == Input::get('status') ? 'success' : 'failure';

    $message = Lang::get(Input::get('lang'))[Input::get('type') . '_' . $message_type];

    Session::flash($message_type, $message);

    return ['status' => $message_type, 'message' => $message];
}

这是很多代码,但一旦设置就非常容易复制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

401 通过 Ajax 对 Laravel 中的 RESTful API 进行未经授权的 DELETE 请求 的相关文章

  • 邮件::队列不工作

    我无法在 laravel 5 4 中对电子邮件进行排队 在之前的 Laravel 5 3 项目中 一切都运行良好 发送仍然有效 Mail send email blank title gt nice content gt message f
  • docker 中的 php Curl 冲突 CURLOPT_FILE 和 CURLOPT_RETURNTRANSFER

    当我使用curl时CURLOPT FILE and CURLOPT RETURNTRANSFER选项 文件为空 没有任何curl错误 fp fopen saveTo w ch curl init fileUrl curl setopt ch
  • 使用 XPATH(和 PHP)从样式属性中选择背景 url

    我只想从此背景图像样式属性中选择 url 这可以通过 XPATH 实现吗 a href http www test com style background image none test a 我有类似的东西 url xpath gt qu
  • jquery星级评分插件和jquery点击功能

    我正在使用 jquery 星级评分插件 http www fyneworks com jquery star rating http www fyneworks com jquery star rating 我可能会得到一些像这样的html
  • 如何将 Laravel-5.6 转换为 .exe

    我正在本地主机中加载项目 我的管理员要求我将 laravel 5 6 与 mysql 一起转换为 exe 我是这方面的新手 不知道 有哪位高手可以指导一下吗 提前致谢 我不确定你的管理员是否应该要求你将 Laravel 项目转换为 exe
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • focusout 事件后,Mouseleave 事件在 Firefox 中无法持续触发

    我正在运行以下代码
  • jQuery AJAX 请求在 IE8 中失败,并显示消息“错误:调用 open 方法之前无法调用此方法。”

    我正在使用 jQuery 1 4 2 并尝试执行一个简单的 AJAX 请求 目标 URL 返回一个 JSON 字符串 我使用 jslint 对其进行了验证 该请求在 Firefox 和 Chrome 中有效 但不想在 IE8 中工作 我无法
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • 如何处理 REST api 中的 php 通知、警告和错误?

    在 REST API 中 200 响应表明操作成功 PHP 默认情况下直接在响应正文中输出错误消息 而不更改响应代码 在 SPA 中 用户无法直接看到响应文本 因此 当应用程序未按预期工作时 我通过 FireBug 检查响应正文 以检查可能
  • PHP 接口有属性吗?

    PHP 中的接口有属性 还是只有方法 您可以在 DocBlock 中为接口声明属性 然后 IDE 将提示接口的这些属性 PhpStorm 会这样做 但这不会强制在实现类中实际实现这些字段 例如 property string passwor
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • PHP 拒绝从 var_dump、print 等输出数据

    我目前正在运行 WAMP 服务器 并且在过去的 30 分钟内一直在尝试弄清楚我的项目如何以及为什么不会输出任何指定的 PHP 数据 起初我以为是因为我有一个 htaccess文件的output buffering被禁用 所以我删除了它 仍然
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • PayPal 网关已拒绝请求。安全标头无效(#10002:安全错误 Magento

    在 magento 中增加 PayPal 预付款 我已填写 magento admin 中的所有凭据 但是当我进入前端并单击 pay pal 按钮时 它给出了 PayPal 网关已拒绝请求 安全标头无效 10002 安全错误 我用谷歌搜索了
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 分页在服务器端好还是前端好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在构建 Laravel Vue 应用程序 我想知道在后端使用分页还是在前端使用分页更好 我认为最好在每页发送尽可能少的数据的请求 但我想听听

随机推荐

  • 在 C++ 程序中添加不必要的大括号 { } 是否会减慢速度?

    这可能是一个愚蠢的问题 但我对 C 和一般编程很陌生 我在这里找不到答案 我知道在 C 中 在某些情况下是可选的 例如 如果您有一个简单的 if 语句 其中仅执行一个操作 则不需要用 将其括起来 我只是想知道额外的括号是否对程序的速度有任何
  • 使用链接器脚本重命名符号

    是否可以使用链接描述文件或映射文件来重命名符号 我正在尝试修改一些用 C 和 Fortran 混合编写的代码 以便它可以在 Linux 上与多个 Fortran 编译器一起工作 目前它是为 Solaris Studio 编译器编写的 并且启
  • Volley - NetworkImageView 有时不显示错误图像?

    所以我决定尝试一下新的排球库如上所示谷歌IO 2013 我在使用简单的解决方案时尝试过NetworkImageView在一个上显示多个图像GridView 它运行良好并显示图像 但如果我让它下载图像 然后在下载过程中关闭 WiFi 它不会显
  • Visual Studio 2010 Professional Beta 2 上的 Windows Mobile 6 Standard SDK 刷新安装问题

    当我安装Windows Mobile 6 标准 SDK 更新我收到错误 未安装 Visual Studio 2005 SP1 或更高版本 我安装了 Visual Studio 2010 Professional Beta 2 请你告诉我如何
  • 使用 props 以纯文本或数组访问对象路径

    考虑以下对象和存储在对象内的值的路径 var obj a 1 b a x 2 b 3 c 4 var path b a x 获取对象路径中的内容的最佳方法 最佳性能 是什么 使用 eval path obj concat path var
  • vba中dim和set有什么区别

    请原谅我 我是 VBA 新手 有时我用 Dim r as Range r Range A1 其他时候我用 Set r Range A1 有什么不同 我什么时候应该使用什么 没有理由使用set除非引用对象引用 最好只在这种情况下使用它 对于所
  • 画布上的 Android Center 文本

    我正在尝试使用下面的代码显示文本 问题是文本没有水平居中 当我设置坐标时drawText 它将文本的底部设置在此位置 我希望绘制文本 以便文本也水平居中 这是进一步显示我的问题的图片 Override protected void onDr
  • Toast 类型中的方法 makeText 不适用于参数

    我正在使用 ViewPagerIndicator 并尝试使用 Toast 在滚动到下一个片段页面时显示 我收到以下错误 The method makeText Context CharSequence int in the type Toa
  • C# 获取文件更改事件

    我确实有一个程序可以在文本文件中记录一些特定事件 它使文件保持打开状态 现在我想编写第二个应用程序 在表单上显示这些日志 我可以为另一个进程打开的文本文件中的任何更改设置事件吗 或者我必须定期阅读 thanks 看看文件系统观察者类
  • 选择对不同数据库服务器上的 2 个表进行查询

    我试图通过在经典 ASP 中查询 2 个数据库 Sybase 来生成报告 我创建了 2 个连接字符串 数据库的 connA数据库 B 的 connB 两个数据库都存在于同一服务器上 不知道这是否重要 Queries q1 SELECT co
  • 如何读写Excel文件

    我想从 Java 读取和写入一个 3 列 N 行的 Excel 文件 在每个单元格中打印一个字符串 谁能给我简单的代码片段 我是否需要使用任何外部库或者 Java 是否有内置支持 我想做以下事情 for i 0 i
  • 尝试从谷歌搜索编辑框获取并打印数据,但出现 InvalidElementStateException

    我试图在谷歌搜索编辑框中写一个单词并捕获所有相关的列表项并显示它 但在这样做时我遇到了例外 org openqa selenium InvalidElementStateException 元素已禁用 因此不能用于操作 我经历了相同的异常相
  • 如何从另一个组件调用一个组件方法?

    我有一个包含按钮的标题组件 我希望该按钮在单击时显示另一个组件 模式页面 我可以做这样的事情吗 这是我的标题组件 import ComponentToDisplay from components ComponentToDisplay in
  • DirectShow 过滤器未显示为输入捕获设备

    从捕获源过滤器的优秀示例开始here我编写了自己的输入捕获设备 该设备在 Graph Studio Next 中运行良好 但在 Skype 或类似应用程序中并未显示为捕获设备 即网络摄像头 因为我想了解发生了什么 所以我请您帮助我找出那些应
  • 如何使用nodejs读取.pdf文件的内容?

    我有一个自动化 PDF 内容的方案 如何在nodejs中检索PDF文件的内容 我对此完全被封锁了 虽然帖子很少pdf2jsona and jsonreader但那些对我不起作用 任何帮助将不胜感激 var pdfParser new PDF
  • 是或否:服务器能否发送 HTTP 响应,同时仍从相关 HTTP 请求上传文件?

    如果网站用户使用以下方式提交 HTML 表单 1 post 方法 2 多部分 表单数据编码类型 3 附件很大 服务器是否可以上传发布的文件 并在文件上传完成之前发送服务器生成的 HTTP 响应 而不使用 AJAX 这是相当密集的 因此 我写
  • 如何在 C# 中使用 SqlDataReader 获取行数

    我的问题是如何使用查询返回的行数SqlDataReader在 C 中 我已经看到了一些关于此问题的答案 但没有一个明确定义 除了一个声明执行 while 循环的答案Read 方法并增加一个计数器 我的问题是 我试图填充一个多维数组 第一行是
  • “setenforce 0”如何以及为何允许 Java 7 运行? [关闭]

    Closed 这个问题是无关 目前不接受答案 我对我正在开发的程序进行了一些更改 并将 Java 从 Java 6 更新到了 Java 7 我在 CentOS 5 8 32 位虚拟机上运行该程序 在 Java 更新之前 它运行良好 现在该过
  • API:Spotify上基于推文的音乐推荐,需要word2vec还是doc2vec?

    我想设计一个推荐系统 根据使用主题标签 nowplaying 的推文推荐用户歌曲 最初 我想权衡他们的推文并逐字分析 看看他们是否在推文中发布了有关某些歌曲的任何内容 但这似乎需要我更多的时间 由于我不会分析每条推文 而只是查找包含主题标签
  • 401 通过 Ajax 对 Laravel 中的 RESTful API 进行未经授权的 DELETE 请求

    我使用创建了一个宁静的 APIlaravel控制器 我有一个PhotosController其中有一个destroy id 资源删除方法 我也有一块javascript发送的代码DELETE向我的应用程序请求 结果应该是删除照片 idID