gpt4 book ai didi

javascript - AngularJS 和 Laravel CORS,预检选项后 POST 停止

转载 作者:行者123 更新时间:2023-11-28 07:39:36 24 4
gpt4 key购买 nike

这是一只鸟想要担任该职位但在飞行前测试中失败的故事......

使用 Laravel 构建的应用程序用作 RESTful API 和 AngularJS/ionic。我的 API 调用工作正常,直到......由于未知原因它停止了。虽然我为调用的 angularJS 端设置了 withCredentials,但预检选项没有发送 cookie,但我从 Laravel 收到了一个 cookie。我们如何禁用 OPTIONS 返回 cookie laravel_session?它搞乱了 CORS,因为它设置了一个新 session ,该 session 在每个 POST 上显然都会有所不同。对于 Laravel 端,我使用 @barryvdh 的 Laravel/CORS 包,配置如下:

 '*' => array(
'supportsCredentials' => true,
'allowedOrigins' => array('*'),
'allowedHeaders' => array('*'),
'allowedMethods' => array('POST', 'PUT', 'GET', 'PATCH', 'OPTIONS', 'DELETE'),
'maxAge' => 36000,
'hosts' => array('api.*'),
)

在 Angular 方面,我有以下内容:

$http({
method: 'POST',
url: 'http://api.blabla.local/banana',
data: data,
withCredentials: true
})

我的 GET 调用工作正常,我在应用程序启动时运行一个调用,以从 laravel 获取 CSRF,并在需要时发回。

现在发生以下情况:
1. 预检选项 > 请求没有 session 的 cookie。 Reponse = 200 使用不同的 session cookie,这将导致 CSRF 始终发生。 [想法: withCredentials 不适用于 OPTIONS 调用]
2. POST > 失败,显示 500,在 header 中我没有看到任何响应,但它确实发送了 cookie/ session [想法:凭据已传递给它,但它们也是错误的,因为它们由于预检选项而在服务器端发生了更改]。错误消息表明它不是授权来源。

发生什么事了?我已经尝试了几个小时并检查了很多其他帖子,但似乎没有任何帮助!我可以取消预检吗?如何?或者问题出在其他地方(我使用 Laravel Homestead 的服务器端)?我觉得真正的问题是 OPTIONS 返回一个 session cookie,或者只是请求确实包含一个!

感谢您的帮助,我已经被困了好几个小时了,我快要疯了......

最佳答案

在 L4.2 下的filters.php 中我最终使用了这个:这个问题很老了,所以不确定这是我做的唯一的事情,但看起来是这样的:

App::before(function($request)
{
//
// Enable CORS
// In production, replace * with http://yourdomain.com
header("Access-Control-Allow-Origin: http://mydomain.local");
header('Access-Control-Allow-Credentials: true'); //optional
if (Request::getMethod() == "OPTIONS") {
// The client-side application can set only headers allowed in Access-Control-Allow-Headers
$headers = [
'Access-Control-Allow-Methods'=> 'GET, POST, PUT, DELETE',
'Access-Control-Allow-Headers'=> 'Content-Type'
];
return Response::make('You are connected to the API', 200, $headers);
}

});


App::after(function($request, $response)
{
//
});

关于javascript - AngularJS 和 Laravel CORS,预检选项后 POST 停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28213329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com