我在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无法加载localhost:8080 / wtf.jpg。交叉起源 请求仅支持协议方案:http,data,chrome, chrome-extension,https,chrome-extension-resource。
有没有解决这个烦恼的方法?
答案 0 :(得分:0)
我通过改变两件事来解决这个问题:
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)))
}
这对于生产来说不安全,但足以进行本地测试。