我在使用 vue 的 symfony 下配置 mercure 时遇到问题。我正在使用附加在 symfony cli 中的美居集线器。在 .env 文件中,我将 Mercure url 更改为使用 http,因为它导致我的证书错误(由 symfony 包含)。
.env
MERCURE_URL=http://localhost:8000/.well-known/mercure
MERCURE_PUBLIC_URL=http://localhost:8000/.well-known/mercure
MERCURE_JWT_SECRET="!ChangeMe!"
当我通过在示例 http://localhost:8000 中打开 symfony 应用程序并在控制台中添加此脚本来测试它时:
const eventSource = new EventSource('http://localhost:8000/.well-known/mercure?topic=' + encodeURIComponent('http://example.com/books/1'));
eventSource.onmessage = event => {
// Will be called every time an update is published by the server
console.log(JSON.parse(event.data));
}
它正在工作,我可以在其他选项卡中发布一些更改。但是当我做同样的事情但在我位于 http://localhost:8080 地址的 vue 应用程序中时,它会在控制台错误中显示我:
Access to resource at 'http://localhost:8000/.well-known/mercure?topic=http://example.com/books/1' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我还有两个问题:
- 为什么当我将 jwt 令牌粘贴到 env 中时出现 401 错误,但上面没有这个错误?
- 为什么我不能在 https 中使用 symfony 服务?我收到“TransportException: fopen(): Unable to locate certificate CN”错误