当前位置: 首页 > 知识库问答 >
问题:

设置Cookie[重复]时,Laravel CORS不工作

百里伟
2023-03-14

我正在Laravel应用程序中为Cors使用\Fruitcake\Cors\HandleCors中间件。

我的cors。php文件如下所示:

   'paths' => ['api/*', 'oauth/*', '*'],

    'allowed_methods' => ['POST', 'GET', 'DELETE', 'PUT', '*'],

    'allowed_origins' => ['http://localhost:3000', 'https://localhost:3000'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true,

我设置cookie作为回应,如下所示:

$access_cookie = Cookie::make('access_token', $access_token, $cookieLife, null, null, true);
$refresh_cookie = Cookie::make('refresh_token', $refresh_token, $MINUTES_IN_ONE_YEAR, null, null, true);
    
    
     return response()
                ->json(['tokens' => ['access_token' => $access_token, 'refresh_token' => $refresh_token], 'user' => $user])->withCookie($access_cookie)->withCookie($refresh_cookie);

最后,我从运行在https://localhost:3000

它给我一个错误,说不允许CORS(经典CORS错误)。

但是当我从响应中删除cookie时,它就可以正常工作了。

我还需要什么设置才能让它工作?

共有1个答案

汪理
2023-03-14

不确定这是否是您想要的,但我使用的是laravel 5.3,必须添加CORS对API调用的支持,该API调用是从其他应用程序对我的应用程序进行的,这就是我所做的。

在app\Http\Middlewear中,我创建了一个名为Cors的文件。php并将其放置在以下位置:

<?php namespace App\Http\Middleware;

use Closure;

 class Cors {

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{

    header("Access-Control-Allow-Origin: *");

    // ALLOW OPTIONS METHOD
    $headers = [
        'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
        'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin'
    ];
    if($request->getMethod() == "OPTIONS") {
        // The client-side application can set only headers allowed in Access-Control-Allow-Headers
        return Response::make('OK', 200, $headers);
    }

    $response = $next($request);
    foreach($headers as $key => $value)
        $response->header($key, $value);
    return $response;
}

}

然后在App\Http\Kernel.php里面的保护$routeMiddleware我添加

   'cors' => \App\Http\Middleware\Cors::class,

然后在我的路线上,无论什么需要CORS,我都添加了中装

    Route::post('/my/api/call', 'MyController@MyApiRoute')->middleware(['cors']);
 类似资料:
  • 本文向大家介绍JS设置cookie、读取cookie,包括了JS设置cookie、读取cookie的使用技巧和注意事项,需要的朋友参考一下 JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。 而cookie是运行在客户端的,所以可以用JS来设置cookie。 js设置cookie方法汇总: 第一种: 第二种: 第三个例子 注意:

  • 我从互联网上搜索了很多来设置凌空的请求超时。我最终得到了重试策略的解决方案,但当研究它不设置超时时,它会设置请求的重试时间,但我不想重试我的请求。我想增加凌空请求超时,以便较慢的网络可以访问数据,凌空超时设置为5秒,这意味着如果网络直到5秒才连接,它将抛出超时异常。我如何管理更改时间以从服务器获取响应。 我的代码是 我有两个问题-- (1) 它会在30秒后重试请求吗? (2)如何设置请求超时30秒

  • 我在尝试运行我的代码时遇到了这个错误,这是一个简单的javafx代码来加载一个fxml文件,我尝试了我在这里找到的解决方案,但没有一个对我有效。很抱歉,如果格式不是很好,这是我在这里的第一个帖子,并且很抱歉,如果我在屠杀语言,英语不是我的第一语言。提前道谢! 这是事情的组织方式

  • 我创建了这段代码,其中大部分代码都是使用toUpperCase,它应该使单词的每个首字母都大写。没有错误,因此我不确定该方法当前为何不起作用。为什么会这样呢。

  • 这里,我需要将cookie-header设置为不显式地添加cookie-header(像浏览器那样)。尝试这样做时,会给出错误“”。 虽然我已经找到了一个补丁,并成功地发送了cookie-header。但想知道为什么设置cookie-header被禁用了?我曾经读过,发现它是数据完整性和安全性所必需的,但在这种情况下,什么安全性可以被破坏,没有提到哪里。我想评估一下,如果我使用补丁,这个数据完整性

  • 我尝试过交替cors设置,但没有成功。客户端调用使用axios,并设置了。