我有一个js应用程序,可以检测单个,双右,双左键单击等。单击是异步。请求http服务器和休息是在客户端更改用户界面。 但我无法成功将请求发送到服务器并在客户端看到错误。 什么都没发送,我从我的网络服务器的日志中读到它。
这些是控制台上的错误消息:
[Error] XMLHttpRequest cannot load localhost:5050/h?timestampDate=2010-undefined-null×tampHour=null.
Cross origin requests are only supported for HTTP.
send ([native code], line 0)
h (tm, line 420)
(anonymous function) (tm, line 72)
[Error] NETWORK_ERR: XMLHttpRequest Exception 101: A network error occurred in synchronous requests.
h (tm, line 420)
(anonymous function) (tm, line 72)
这里有什么问题。 Cross origin请求意味着什么。我的ajax请求与前一个请求有什么不同,可以成功。
注意:在小提琴中,第一个错误参考(tm,第420行)位于js的第344行,第二个位于js的第11行。
js fiddle:http://jsfiddle.net/farukscan/6kUBy/
答案 0 :(得分:2)
错误源自URL字符串:
xmlhttp.open("GET", "localhost:5050/h" + "?" + ..., true);
当包含主机时,您需要在其前面添加至少//
,以便浏览器知道该字符串是绝对URL:
xmlhttp.open("GET", "//localhost:5050/h" + "?" + ..., true);
// ^^
xmlhttp.open("GET", "http://localhost:5050/h" + "?" + ..., true);
否则,假定URL相对于当前页面的地址,因此浏览器会尝试将localhost:5050
视为文件夹名称。
而且,“Cross Origin”指的是Same Origin Policy失败的网址。这是客户端JavaScript可以访问的地址的安全限制。
“Origin”是当前地址的协议,主机名和端口的组合。