我想通过以下方式使用Laravel Echo:
我有两个docker容器,一个用于laravel(php),一个用于套接字服务器(https://hub.docker.com/r/mintopia/laravel-echo-server)。
现在我有个问题,由于CORS,Laravel Echo无法连接到服务器。
我已经找到了回显服务器的一个选项,因此我向环境变量中添加了ECHO_ALLOW_ORIGIN = http://php:80。不幸的是,这没有改变。
有人可以告诉我如何解决吗?
答案 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.1
,localhost
或192.168.
XX,后跟冒号和端口(可能是80或443 ...您还可以对端口做一个*,以允许任何端口与回显服务器通信)。