【问题标题】:Random 404 from localhost来自本地主机的随机 404
【发布时间】:2014-11-15 19:48:34
【问题描述】:

我在 python 中运行本地服务器

 python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port"

编辑:这是传递给python -c的命令字符串的可读版本,所以在伪代码中,上面的代码块可以这样恢复:python -c $'command' "$port" where 命令部分是:

import SimpleHTTPServer
map = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map
map[""] = "text/plain"

for key, value in map.items():
    map[key] = value + ";charset=UTF-8"

SimpleHTTPServer.test()

我得到(看似)随机的 404 错误,阻止我的 js 正确执行。

更具体地说,我正在提供一个静态 html 页面及其链接的 javascript 文件。
Chrome 在index.html 页面上的这个脚本标签上告诉我net::ERR_ADDRESS_UNREACHABLE,有时net::ERR_CONNECTION_REFUSED

<script type="text/javascript" src="http://localhost:8000/lib/fonts.js"></script>

我有 3 种奇怪的行为我不明白:

  1. 如果我检查运行 python 服务器的终端日志,我没有任何 404 错误。事实上,它表示文件已正确提供 (200)。
  2. 如果我进入 chrome 的网络面板,它会告诉我:Failed to load response data 但如果我“在新选项卡上打开链接”,我实际上可以看到该文件! 如果我在另一个选项卡上加载文件 http://localhost:8000/lib/fonts.js 并多次刷新,我永远不会出错。
  3. 有时我没有收到任何 404 错误,但我的 js 根本不起作用(没有 js 错误)

那么是谁造成了问题? Chrome、Python 或我的 js 中的一些异步行为?
我怀疑js文件没有按顺序加载,所以其他js脚本找不到和使用它们..

EDIT2:
如果我切换服务器,例如使用内置的 php 服务器:

php -S localhost:8000

我不会得到错误

【问题讨论】:

  • 如果您将命令行调用分解为可读的python源代码,您的问题可能更容易得到回答。
  • @col6y 我已经这样做了,谢谢
  • 如果去掉添加字符集信息的部分,是否还有问题?
  • @col6y 是的,什么都不会改变
  • 我试图复制这个,但似乎无法复制,即使有 101MB 的 JavaScript 文件。

标签: javascript python google-chrome


【解决方案1】:

好吧,这似乎是由两个不同的问题引起的:

  1. 我已经删除了&lt;script&gt; 节点上的所有async 属性。尤其是从 google 加载带有 async 属性的 jquery 似乎导致了大部分问题。很可能脚本的顺序没有被保留,但我从来没有收到关于 jquery 未定义的任何错误,我在缺少脚本/lib/fonts.js 奇怪时收到错误..
  2. 即使很难删除 async 也会让事情变得更可靠,每 10 次刷新一次或多或少一次我仍然在不同的外部资源上遇到 net::ERR_ADDRESS_UNREACHABLEnet::ERR_CONNECTION_REFUSED 类型的错误,有时在 js 文件上,有时在css 文件。使用 php 内置服务器更改 python 服务器似乎消除了剩余的随机错误。

所以php -S localhost:8000 比python 对应物更可靠(在我的情况下)。

注意:即使我已经解决了这个问题,我仍然不知道究竟是什么导致了错误,所以如果其他人有比这更好的答案,他非常欢迎发布。我会暂时不接受答案。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 2013-08-14
    • 2013-07-22
    • 2018-06-27
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多