来自localhost的随机404

时间:2014-11-15 19:48:34

标签: javascript python google-chrome

我在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"其中  命令部分是:

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在net::ERR_ADDRESS_UNREACHABLE页面上的此脚本标记上告诉我net::ERR_CONNECTION_REFUSED,有时index.html

<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错误)
  4. 那么是谁造成了这个问题? Chrome,Python或我的js中的一些异步行为?
    我怀疑js文件没有按顺序加载,所以其他js脚本找不到并使用它们。

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

    php -S localhost:8000
    

    我不会得到错误

1 个答案:

答案 0 :(得分:0)

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

  1. 我已删除async个节点上的任何<script>个属性。特别是似乎从谷歌加载具有async属性的jquery导致了大多数问题。很可能脚本的顺序没有保留但是我从来没有得到任何关于jquery未定义的错误,我在丢失的脚本上遇到错误/lib/fonts.js很奇怪..
  2. 即使很难删除async使事情变得更可靠,每10页刷新一次或多或少一次我仍然在不同的外部资源上遇到net::ERR_ADDRESS_UNREACHABLEnet::ERR_CONNECTION_REFUSED类型的错误,有时是js文件,有时在css文件上。使用php内置服务器更改python服务器似乎删除了剩余的随机错误。
  3. 所以php -S localhost:8000比python对手更可靠(在我的情况下)。

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