laravel - 将 Laravel Echo 与 docker 一起使用(CORS 问题)
问题描述
我想通过以下方式使用 Laravel Echo:
我有两个 docker 容器,一个用于 laravel (php),一个用于套接字服务器 ( https://hub.docker.com/r/mintopia/laravel-echo-server )。
现在我遇到了问题,由于 CORS,Laravel Echo 无法连接到服务器。
我已经为回显服务器找到了一个选项,因此我将 ECHO_ALLOW_ORIGIN= http://php:80添加到环境变量中。不幸的是,这没有任何改变。
有人可以告诉我如何解决这个问题吗?
解决方案
我使用 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
XX,后跟冒号和端口(可能是 80 或 443 ...您也可以执行 *用于端口以允许任何端口与回显服务器对话)。localhost
192.168.
推荐阅读
- php - Laravel 没有将 Json 数据插入 MySQL
- react-native - 如何在 map 函数中使用 if 语句(React Native)?
- python - 由python用tkinter gui编写的.exe,可以输入但在我关闭窗口之前自动关闭
- android - BLE 扫描是否适用于没有 GPS 芯片的平板电脑?
- jmeter - 如何使用类似soapui的wsdl在jmeter中验证xml响应
- ios - 从 WKWebView 打开照片库或相机?
- mysql - 如何处理通过 url 发送的问号?
- source-maps - 移动浏览器会下载sourcemap文件吗?
- java - 在 Eclipse 中为我的项目执行 maven 安装的脚本
- javascript - 如何使用正则表达式在 Javascript 中传递字符串值数组