Cross origin请求意味着什么?

时间:2014-05-22 21:04:43

标签: javascript jquery ajax

我有一个js应用程序,可以检测单个,双右,双左键单击等。单击是异步。请求http服务器和休息是在客户端更改用户界面。 但我无法成功将请求发送到服务器并在客户端看到错误。 什么都没发送,我从我的网络服务器的日志中读到它。

这些是控制台上的错误消息:

[Error] XMLHttpRequest cannot load localhost:5050/h?timestampDate=2010-undefined-null&timestampHour=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/

1 个答案:

答案 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”是当前地址的协议,主机名和端口的组合。