You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Android端Chrome浏览器访问Elixir plug_cowboy HTTP服务器时出现的ERR_UNSAFE_PORT错误

解决Android Chrome访问Elixir Plug-Cowboy服务器时的ERR_UNSAFE_PORT错误

这个问题的核心原因是Chrome会将特定端口标记为"不安全端口",默认禁止访问这些端口——不管你是在Windows还是Android上运行Chrome,这个规则都是通用的。你之前用Node.js/Python没问题,大概率是因为当时用的是Chrome允许的常规端口(比如3000、5000、8080这类),而这次Plug-Cowboy默认或你配置的端口刚好在Chrome的不安全列表里。

第一步:确认当前使用的端口是否在Chrome的不安全列表中

Chrome的不安全端口包括但不限于:21(FTP)、22(SSH)、23(Telnet)、25(SMTP)、109(POP2)、110(POP3)、135(MSRPC)、139(NetBIOS)、445(SMB)、554(RTSP)、1025-1048、1723(PPTP)、3659、4661(eDonkey)、5060/5061(SIP)、6000(X11)、6665-6669(IRC)、6697等。

你可以先检查你的Plug-Cowboy配置里的端口号,比如在纯Plug项目的启动代码里:

# 看看这里的port是不是上面列表里的
Plug.Cowboy.http MyApp.Plug, [], port: 1080

或者Phoenix项目的config/dev.exs里的端点配置:

config :my_app, MyAppWeb.Endpoint,
  http: [port: 6667], # 检查这个端口
  # ...其他配置

第二步:切换到Chrome允许的安全端口

最直接且无副作用的解决方案就是把端口换成Chrome认可的安全端口,比如8080、3000、4000、5000、8000这些常用端口。

修改配置示例:

  • 纯Plug+Cowboy项目:
# 把port改成4000或者其他安全端口
Plug.Cowboy.http MyApp.Plug, [], port: 4000
  • Phoenix项目:
config :my_app, MyAppWeb.Endpoint,
  http: [port: 4000],
  # ...保持其他配置不变

修改后重启服务器,再用Android Chrome访问,应该就能正常加载了。

为什么Node.js/Python之前没出现这个问题?

因为Node.js(比如Express默认3000)、Python(比如Flask默认5000)的常用默认端口都不在Chrome的不安全端口列表里,所以你之前没碰到这个问题。而Plug-Cowboy的默认端口如果是你自己指定的,刚好踩中了Chrome的禁用列表,就会触发这个错误。

(可选)如果必须使用不安全端口的处理方式(不推荐)

如果因为业务需求必须使用那个被Chrome禁用的端口,Android上的Chrome可以通过添加启动参数绕过这个限制,但操作比Windows麻烦:

  • 你需要通过ADB命令启动Chrome并添加--explicitly-allowed-ports=XXX参数(XXX是你要用的端口),比如:
adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main --es "command_line" "--explicitly-allowed-ports=1080"

不过这种方式每次启动Chrome都需要这么操作,而且对于普通用户来说门槛较高,还是优先推荐切换到安全端口。

内容的提问来源于stack exchange,提问作者faBri_CI-o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 05:53:10