我需要在React上登录我的SPA,它在127.0.0.1:8000上工作
Laravel在127.0.0.1:3000上工作。当我使用axios请求时,我在chrome中的日志中得到错误:
CORS策略已阻止从源“http://localhost:3000”访问位于“http://localhost:8000/login”的XMLHttpRequest:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
在sanctum.php中我添加了
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,localhost:8000,127.0.0.1:3000,::1',
Sanctum::currentApplicationUrlWithPort()
))),
在.env中,我写入SANCTUM_STATEFUL_DOMAINS=127.0.0.1:3000
并尝试使用SANCTUM_STATEFUL_DOMAINS=127.0.0.1:8000
,但它也不起作用;在文档中,我只找到了域和子域的信息,但我不处理域。
当然,我可以写在'cors.php' 'paths' => ['api/*', 'sanctum/csrf-cookie', 'login']
,但我认为是坏的解决方案。
请求代码axios:
const config={
headers:{
accept:'application/json',
referer:'127.0.0.1:8000/',
'Access-Control-Allow-Origin':'*'
}
}
function fetchCookie(){
const response = axios.get('http://localhost:8000/sanctum/csrf-cookie')
const response1 = axios.post('http://localhost:8000/login',loginData,config)
console.log(response1);
}
因此,我应该在哪里写,写什么,让它为我工作。
提前为我的英语道歉
2条答案
按热度按时间wpx232ag1#
在你的Laravel应用中,你需要设置特定的HTTP响应头。这些特定的头通常被称为CORS头,因为它们告诉浏览器可以将这些HTTP请求发送到localhost:8000。
Where can I set headers in laravel
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
这个单一的HTTP响应头应该是您所需要的最小值:
但你也可以更明确地说:
mqxuamgl2#
需要创建一个中间件如何回答@RaphaelRafatpanah,并添加在它的标题。
这些标题将解决初始错误和后续错误。