将 Laravel Echo 与 docker 一起使用(CORS 问题)
Posted
技术标签:
【中文标题】将 Laravel Echo 与 docker 一起使用(CORS 问题)【英文标题】:Use Laravel Echo with docker (CORS Problem) 【发布时间】:2019-09-15 06:52:45 【问题描述】:我想通过以下方式使用 Laravel Echo:
我有两个 docker 容器,一个用于 laravel (php),一个用于套接字服务器 (https://hub.docker.com/r/mintopia/laravel-echo-server)。
现在我遇到了问题,由于 CORS,Laravel Echo 无法连接到服务器。
我已经为 echo 服务器找到了一个选项,因此我将 ECHO_ALLOW_ORIGIN=http://php:80 添加到环境变量中。不幸的是,这没有任何改变。
谁能告诉我如何解决这个问题?
【问题讨论】:
【参考方案1】:我使用 k1sliy/laravel-echo-server,但位置/命令应该相似。
您与您的 TSL/SSL 证书和 laravel-echo-server.json
或仅文件本身共享一个目录。例如,我以类似的方式开始我的(注意我认为我的端口对于 echo 来说是非标准的,因为我需要一个 cloudflare 将代理):
docker run -d --name echo \
-p 8443:8443 \
-v YOURPATH/laravel-echo-server.json:/app/laravel-echo-server.json \
-v YOURPATH/privkey.pem:/app/privkey.pem \
-v YOURPATH/cert.pem:/app/cert.pem k1sliy/laravel-echo-server
您需要编辑 laravel-echo-server.json
文件并确保其中包含此文件(其中 YOUR_ORIGIN_HERE 是您要允许的来源)并销毁并重新创建 docker 容器以强制它重新读取配置:
"apiOriginAllow":
"allowCors": true,
"allowOrigin": " YOUR_ORIGIN_HERE ",
"allowMethods": "OPTIONS, GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
原点是主机/客户端浏览器看到的原点。 php
可能是映射到私有 172 网络的 docker 容器中的主机名——这可能不是您想要的。您希望它是您在浏览器的地址栏(无协议)中输入的任何内容以访问该站点,可能是 128.0.0.1
、localhost
或 192.168.
XX,后跟冒号和端口(可能是 80 或 443 ...您还可以为端口做一个 * 以允许任何端口与回显服务器对话)。
【讨论】:
以上是关于将 Laravel Echo 与 docker 一起使用(CORS 问题)的主要内容,如果未能解决你的问题,请参考以下文章
SQLState [HY000] 连接拒绝 Laravel 与 docker
使用 Laravel Echo、laravel-echo-server 和 socket.io 广播将不起作用
PHP Laravel - 如何将 Spatie Async 用于并发函数