基于CodeIgniter的应用请求JSON文件时出现net::ERR_CONNECTION_REFUSED错误
我来帮你一步步排查这个ERR_CONNECTION_REFUSED错误——这个问题通常和静态资源的路径配置、文件权限或者服务器规则有关,咱们从这几个核心方向入手:
先确认文件的实际位置和请求路径是否匹配
首先,你得检查application-en.json是不是真的在http://127.0.0.1/admin/assets/plugins/translate/这个路径对应的物理目录里。这里容易踩的坑是:CodeIgniter的admin如果是控制器,那URL里的/admin/会指向application/controllers/Admin.php,而不是一个物理目录。如果你的assets文件夹是放在项目根目录下(这是CodeIgniter的标准做法),那正确的请求URL应该是http://127.0.0.1/assets/plugins/translate/application-en.json,而不是带/admin/前缀的。你可以直接在浏览器地址栏输入你请求的URL,看看能不能打开这个JSON文件。如果打不开,说明路径肯定错了,调整jQuery代码里的请求路径,比如把相对路径改成绝对路径(前面加斜杠):
// 错误的相对路径(会基于当前页面URL拼接) $.get("admin/assets/plugins/translate/application-en.json", ...) // 正确的绝对路径(基于网站根目录) $.get("/assets/plugins/translate/application-en.json", ...)检查文件和目录的权限
如果文件确实在正确的位置,那可能是Web服务器没有读取权限。在Linux/macOS环境下,你需要给assets目录及其子目录设置755权限,给JSON文件设置644权限:chmod -R 755 /path/to/your/project/assets chmod 644 /path/to/your/project/assets/plugins/translate/application-en.jsonWindows环境下,右键文件/目录,确保“读取”权限对IIS或Apache的运行账号开放。
验证.htaccess规则是否阻止了静态资源访问
如果你用了CodeIgniter的URL重写(去掉index.php),你的.htaccess文件可能会不小心拦截静态资源的请求。确保你的.htaccess里有排除静态资源目录的规则,比如:RewriteEngine On # 排除assets、uploads等静态资源目录 RewriteCond %{REQUEST_URI} !^/(assets|uploads)/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]这样服务器会直接处理
assets目录下的文件请求,不会转发到CodeIgniter的入口文件。检查CodeIgniter的安全配置
确认你没有在application/config/config.php里设置了过于严格的base_url,或者启用了限制静态资源访问的安全规则。比如base_url应该设置为http://127.0.0.1/,而不是http://127.0.0.1/admin/,否则会导致静态资源路径拼接错误。
按照上面的步骤逐一排查,应该就能解决这个连接拒绝的问题了。
内容的提问来源于stack exchange,提问作者Alfredo Izquierdo

