当前位置: 首页 > 面试题库 >

Laravel API为什么在POST和PUT方法上返回419状态代码?

孔乐邦
2023-03-14
问题内容

我正在尝试通过使用Laravel创建RESTful API。我已经使用 php artisan make:controller
RestController
创建了我的控制器,这是我的控制器代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class RestController extends Controller
{
    private $arr = array(
            array("name"=>"jon", "family"=>"doe"),
            array("name"=>"jhon", "family" => "doue")
        );
    public function index(){
        return json_encode($this->arr);
    }

    public function store(Request $request){
        return "oops!!";
    }

    public function update (Request $request, $id){
        return "test";
    }

}

我在我的routes / web.php文件中添加了以下代码行来创建此路由:

Route::resource('person', 'RestController');

当我尝试在GET / person上测试此api时,它可以正常工作,但在POST和PUT上,我从Laravel获得419状态代码。


问题答案:

如果您正在开发Rest
api,最好不要添加令牌。如果您使用的是5.4或5.5,则可以使用api.php而不是web.php。在api.php中,不需要在发布请求时进行令牌验证。

如果您使用的是web.php,则您可以放弃令牌。这是官方文档

从CSRF保护中排除URI

有时您可能希望从CSRF保护中排除一组URI。例如,如果您正在使用Stripe处理付款并使用其Webhook系统,则您将需要从CSRF保护中排除您的Stripe
Webhook处理程序路由,因为Stripe不知道要发送到您的路由的CSRF令牌。

通常,应将这些类型的路由放置在RouteServiceProvider应用于route /
web.php文件中的所有路由的Web中间件组之外。但是,您也可以通过将路由的URI添加到VerifyCsrfToken中间件的$
except属性中来排除路由:

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'stripe/*',
    ];
}

以供参考

https://laravel.com/docs/5.5/csrf



 类似资料:
  • 嗨,我是Laravel的新手,我正在尝试用ajax表单提交构建一个登录表单。 我抄了 如果我从VerifyCsrfToken检查中排除它,我的代码工作完全正常。但是我确实希望令牌验证有效。 我读过多篇关于csrf令牌的帖子,尝试过,但仍然返回状态码419。 抱歉下面的长代码,但他们在这里(我知道我没有做任何关于设置会话和东西,请忽略现在因为代码返回419状态) 路线/web.php login.j

  • 我正在尝试使用c#httpClient以编程方式从网站获取数据,但我无法获取数据。我提供了下面的链接https://ngodarpan.gov.in/index.php/home/statewise_ngo/5972/33/1 将有一个以表格格式显示的数据列表,如果单击任何链接,将出现一个弹出窗口,其中包含完整的详细信息,我需要通过编程为每个记录获取这些详细信息。 我已尝试通过点击以下链接每次生成

  • 我不知道POST和PUT方法的确切区别。有些人在网上说,当你们更新记录的时候,你们必须使用PUT方法而不是POST,我不知道这是真的吗?? 如果你的网站URL在POST方法1.www.example。com/user/{id}/update:-使用2.www.example。com/user/update:-使用后这是否正确??

  • 我在一个三元组中使用了< code>this.setState(),并试图找出它返回的内容。文档没有提供任何关于它返回什么的信息。

  • 使用dropwizard框架实现了Resful应用程序。我使用dropwizard-auth-jwt对maven包进行身份验证: com.github.toastshaman dropwizard-auth-jwt 1.0.2-0 为了为资源添加身份验证,我实现了sampleAuthenticator,它是使用主体类进行身份验证检查的已实现的身份验证器类。 当MyUser实现主体时: 使用这种配置

  • 问题内容: DO (等类似的功能和)的工作一样,还是他们返回元素的数组? 我问的原因是因为我试图使用更改所有元素的样式。见下文。 问题答案: 您的代码可以正常工作,因为ID必须是唯一的,因此该函数始终仅返回一个元素(或者如果找不到元素)。 然而,,,和其他方法返回元件的阵列状的集合。像使用真实数组那样对其进行迭代: 如果您喜欢较短的内容,请考虑使用jQuery: