Angular 拉拉维尔8号,圣殿和角形8号

Angular 拉拉维尔8号,圣殿和角形8号,angular,laravel,api,cors,laravel-sanctum,Angular,Laravel,Api,Cors,Laravel Sanctum,我有linux的主题环境。我已经用EnsureRefontendRequestsRestateful.env对cors.conf、session.conf、kernel:api进行了配置。我读过的所有文档中都有种族歧视。 本地主机中的Laravel:8000 本地主机中的角度:4200 特别是: Kernel.php: 'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::c

我有linux的主题环境。我已经用EnsureRefontendRequestsRestateful.env对cors.conf、session.conf、kernel:api进行了配置。我读过的所有文档中都有种族歧视。 本地主机中的Laravel:8000 本地主机中的角度:4200

特别是:

Kernel.php:

'api' => [
      \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
      'throttle:api',
...
cors.php

'paths' => [
    'api/*',
    'login',
    'logout',
    'sanctum/csrf-cookie'
],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
sanctum.php

'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost:4200,localhost,localhost:8000,127.0.0.1,127.0.0.1:4200,127.0.0.1:8000')),
in.env

SESSION_DOMAIN=.localhost
当我得到csrf cookie响应时,角度为:

多源(交叉来源)的Bloccata richiesta:源代码变更的标准不同意http://localhost:8000/sanctum/csrf-饼干。莫蒂沃:里希斯塔·科尔斯·诺里希塔

这是我的堆栈:

我错在哪里?
谢谢。

由于违反了跨源资源共享或简称CORS,您的请求被阻止

当您从域a向域B发出请求时,会出现此问题。在这种情况下,当您使用localhost时,我假设您从ng server@
localhost:4200
localhost:8000
发出请求,即Laravel server

要解决这个问题,您需要在Laravel服务器的响应中添加CORS头,即
localhost:8000
。在简单情况下,您可以在响应中添加此标题
Access Control Allow Origin:

*
表示服务器愿意响应来自任何域的请求。这是生产中的一个严重安全问题,因此您应该始终指定CORS应允许的确切域,例如:

访问控制允许原点:http://localhost:4200

有多种方法可以做到这一点。出于开发目的,您可以使用适用于FireFox的CORS插件,如
CORS everywhere

对于DevelopmentServer,您还可以在web服务器中或通过Laravel添加CORS头。使用laravel cors的简便方法


您也可以在

上进一步阅读CORS,谢谢,但是没有足够的设置laravel CORS配置文件吗?在许多教程中,这项工作。我已经配置了firefox插件Moesif CORS,但还不能正常工作。Laravel CORS配置已经足够了,但您还需要验证您的头是否正确并正确发送到服务器。您可以共享请求和响应头吗?此i请求:GET/sanctum/csrf cookie未定义主机:localhost:8000用户代理:Mozilla/5.0(X11;Linux x86_64;rv:78.0)Gecko/20100101 Firefox/78.0接受:应用程序/json,文本/普通,/Accept语言:it,it;q=0.8,在美国;q=0.5,en;q=0.3接受编码:gzip,deflate Origin:Connection:keep alive Referer:in blocked中的响应。这在Chrome中:`Request URL:Request Method:GET Status Code:204 No Content Remote Address:127.0.0.1:8000 Referer策略:降级时无Referer访问控制允许凭据:true访问控制允许来源:缓存控制:无缓存,私人连接:关闭日期:2020年11月5日星期四15:02:21 GMT日期:2020年11月5日星期四15:02:21 GMT主机:本地主机:8000 phpdebugbar id:XF3C98679B8E84BB000E3754630791C8集Cookie:XSRF-TOKEN=EYJPDII6InnfsgrZJHZUKLCATJ2DSTVVFO5D2C9PSISINZHBHVLIJOIBBCK4S…
集Cookie:laravel_session=eyJpdiI6I…..zov-2020 17:02:21 GMT;最大年龄=7200岁;路径=/;域=.localhost;httponly;samesite=lax-Powered-By:PHP/7.4.12接受:application/json,text/plain,*/*接受编码:gzip,deflate,br接受语言:it,it;q=0.9,在美国;q=0.8,en;q=0.7连接:保持活动主机:本地主机:8000来源:http://localhost:4200 推荐人:http://localhost:4200/corporate/session/login Sec Fetch模式:cors Sec Fetch站点:同一站点用户代理:Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/78.0.3904.108 Safari/537.36
csrf collie请求加载正常,允许来源正确,登录时返回什么?如果您无法检查其请求的详细信息,请在postman中查询并共享响应,我知道,但返回的cookie没有保存在存储中,因此在登录请求中,您使用的是X-CSRF-cookie小姐凭据,因此技术上应该发送cookie,就像在API中使用cookie一样,我将建议搬到JWT,使用Laravel的
api
路线。向
web
routes发送请求是针对网页的。