使用API​​的JSON POST中缺少CORS标头“ Access-Control-Allow-Origin”

时间:2020-02-20 01:48:04

标签: cors laravel-5.8

在Laravel 5.8上安装了fruitcake / laravel-cors

我的测试服务器使用route / api.php在127.0.0.1:8000上使用php artisan服务 客户端(nuxt)在127.0.0.1:3000上运行

我可以使用POSTMAN工具将数据发送到服务器

我已经配置了fruitcake / laravel-cors

protected $middleware = [
    // ...
    \Fruitcake\Cors\HandleCors::class,
];

和config / cors.php

<?php

return [

    /*
     * You can enable CORS for 1 or multiple paths.
     * Example: ['api/*']
     */
    'paths' => [],

    /*
    * Matches the request method. `[*]` allows all methods.
    */
    'allowed_methods' => ['*'],

    /*
     * Matches the request origin. `[*]` allows all origins.
     */
    'allowed_origins' => ['*'],

    /*
     * Matches the request origin with, similar to `Request::is()`
     */
    'allowed_origins_patterns' => [],

    /*
     * Sets the Access-Control-Allow-Headers response header. `[*]` allows all headers.
     */
    'allowed_headers' => ['*'],

    /*
     * Sets the Access-Control-Expose-Headers response header.
     */
    'exposed_headers' => false,

    /*
     * Sets the Access-Control-Max-Age response header.
     */
    'max_age' => false,

    /*
     * Sets the Access-Control-Allow-Credentials header.
     */
    'supports_credentials' => false,
];

仍然得到:

在以下位置访问XMLHttpRequest 原产地的“ http://127.0.0.1:8000/api/customerFeedbackStore” “ http://127.0.0.1:3000”已被CORS政策禁止:否 请求中出现“ Access-Control-Allow-Origin”标头 资源。

在浏览器中。

2 个答案:

答案 0 :(得分:0)

“路径”不能为空。您至少应该将其设置为['*'],以便涵盖所有请求。

答案 1 :(得分:0)

似乎Cors的配置正确,但是返回之前的var_dump()和dd()仍然触发了消息。同样不返回任何内容也会导致cors消息。

        var_dump($request);
        dd($request);

使用json响应返回(因为我使用的是Json)效果很好。 (还有其他退货建议吗?)

        return response()->json([
            'data-received' => true
        ]);