javascript - XMLHttpRequest 无法加载 localhost 资源,安全检查是 Chrome

标签 javascript macos google-chrome go xmlhttprequest

我在 OS X 10.11.4 上运行 Chrome 版本 49.0.2623.108(64 位)。

从终端:

我跑了:

> ls /tmp
  wtf.jpg

> ps -ef | grep -i chrome | grep -v grep
  <empty line>

退出 Chrome 后,只需确保没有实例仍在运行。

然后我使用以下参数打开 Chrome 以跳过跨源检查:

> open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files"

我也试过:

> open /Applications/Google\ Chrome.app/ --args --disable-web-security"

现在,我运行简单的 go 服务器:

package main

import "net/http"

func main() {
    panic(http.ListenAndServe(":8080", http.FileServer(http.Dir("/tmp"))))
}

最后,我将 Chrome 指向/tmp 中包含此脚本的本地 html5 页面:

var req = new XMLHttpRequest();
req.open('GET', "localhost:8080/wtf.jpg");
req.onload = function() { 
  console.log("succeeded");
};
req.onerror = function() {
  Error("Network Error");
};
req.send();

结束这个错误:

XMLHttpRequest cannot load localhost:8080/wtf.jpg. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

有办法解决这个烦恼吗?

最佳答案

我通过改变两件事解决了这个问题:

1) 我将 XMLHttpRequest.open 中不合格的 "localhost:8080/wtf.jpg" 更改为 "http://localhost:8080/wtf.jpg"。这解决了 Chrome 错误消息。

2) 我更新了我的简单 go 服务器:

package main

import "net/http"

const PORT = ":8080"

func handler(w http.ResponseWriter, r *http.Request) {
    if r.Method == "OPTIONS" {
        w.Header().Set("Access-Control-Allow-Origin", "http://localhost"+PORT)
    } else {
        http.ServeFile(w, r, "wtf.html")
    }
}

func main() {
    panic(http.ListenAndServe(PORT, http.HandlerFunc(handler)))
}

这对于生产来说并不安全,但对于本地测试来说已经足够好了。

关于javascript - XMLHttpRequest 无法加载 localhost 资源,安全检查是 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36214183/

相关文章:

javascript - 每次播放音频对象时 Chrome 浏览器 : GET favicon. ico

javascript - Flexslider 无限循环

javascript - 许多 100% 高度/宽度 div - 旋转木马导航?

python - 如何在 Python 中获取特定程序的当前 CPU、GPU 和 RAM 使用情况?

google-chrome - 来自后台页面的 Chrome 扩展程序 : How to know when a tab has finished loading,

Javascript Internet Explorer 兼容性,函数未定义

javascript - Selenium 在表单字段中的 javascript 末尾添加奇怪的字符

javascript - 定义行中的 Null/Empty 与 Zero/0

objective-c - 以编程方式更改 NSSlider 值

python - Mac 上 Python 的 Midi 库