使用 Laravel Echo with docker(CORS 问题)

Use Laravel Echo with docker (CORS Problem)

我想按以下方式使用 Laravel Echo:

我有两个 docker 容器,一个用于 laravel (php),一个用于套接字服务器 (https://hub.docker.com/r/mintopia/laravel-echo-server)。

现在我遇到了问题,Laravel 由于 CORS,Echo 无法连接到服务器。

我已经为回显服务器找到了一个选项,所以我在环境变量中添加了 ECHO_ALLOW_ORIGIN=http://php:80。不幸的是,这没有任何改变。

有人可以告诉我如何解决这个问题吗?

我用的是k1sliy/laravel-echo-server,但是locations/commands应该差不多。

您与 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"
    }

原点是 host/client 浏览器看到的原点。 php 可能是映射到私有 172 网络的 docker 容器中的主机名——这不太可能是您想要的。您希望它是您在浏览器的地址栏(无协议)中输入的任何内容以访问该站点,可能是 128.0.0.1localhost192.168.X.X,然后是一个冒号和端口(可能是 80 或 443 ...您也可以为端口做一个 * 以允许任何端口与回显服务器通信)。