Angular使用代理配置的ng serve无法从Laravel API设置cookies。

11

我有一个项目,使用Angular作为前端,并具有Laravel API作为后端。我想利用ng serve的代理实时重新加载:


ng serve --proxy-config proxy.config.js

以下是proxy.config.js文件:

const PROXY_CONFIG = {                             
  "/v2/*": {                                     
    "target": "http://local-laravel-api/",
    "secure": false,                           
    "pathRewrite": {                           
      "^/v2": "/v2"                            
    },                                         
    "logLevel": "debug", 
    "changeOrigin": true
  }
}

module.exports = PROXY_CONFIG;

laravel API具有身份验证功能。当我访问localhost:4200时,我会得到“未经身份验证”的提示,因为当通过代理进行浏览时,浏览器中没有设置身份验证cookie。

如果我直接访问API(在浏览器中输入local-laravel-api),则cookie存在并且我已通过身份验证。

基本上,似乎代理没有接收到cookies(我不知道原因)。

我已经看过网络上讨论同样问题的多个主题,我已经尝试过所有这些方法,但仍无法访问API。

有人有什么想法可以解决这个问题吗?

非常感谢任何帮助!


1
这只在本地开发时才会出现吗?如果将解决方案部署到相同的域上,您是否仍然看到错误?我尚未测试过,但我认为您可以在代理配置文件中设置cookieDomainRewrite属性。请参见https://github.com/chimurai/http-proxy-middleware#http-proxy-options。 - JoAMoS
1
我刚意识到这是一个将近两年的问题,但希望如果其他人也来到这里,这些信息可能会有所帮助。 - JoAMoS
1个回答

11
尝试在代理配置中添加"cookieDomainRewrite": "localhost"作为附加设置。

2
如果你曾经来到布拉格,给我发消息,我请你喝免费啤酒! - Arif
1
这必须被标记为正确答案。另外,我在哪里可以获取代理设置的所有可用选项列表? - murli2308
请直接访问 https://github.com/chimurai/http-proxy-middleware。 - Alex Rempel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接