将Laravel Echo与docker一起使用(CORS问题)

时间:2019-04-25 19:04:49

标签: laravel docker cors laravel-echo

我想通过以下方式使用Laravel Echo:

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

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

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

有人可以告诉我如何解决吗?

1 个答案:

答案 0 :(得分:1)

我使用k1sliy / laravel-echo-server,但是位置/命令应该相似。

您使用TSL / SSL证书和laravel-echo-server.json共享目录,或者仅共享文件本身。例如,我以类似以下内容开始(请注意,我认为我的端口对于回显而言是非标准的,因为我需要一个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.1localhost192.168. XX,后跟冒号和端口(可能是80或443 ...您还可以对端口做一个*,以允许任何端口与回显服务器通信)。