使用 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.1
、localhost
或 192.168.
X.X,然后是一个冒号和端口(可能是 80 或 443 ...您也可以为端口做一个 * 以允许任何端口与回显服务器通信)。
我想按以下方式使用 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.1
、localhost
或 192.168.
X.X,然后是一个冒号和端口(可能是 80 或 443 ...您也可以为端口做一个 * 以允许任何端口与回显服务器通信)。