2014-05-22 41 views
0

我有一个js应用程序,检测单,双右,左双击等。单击是为异步。请求http服务器和休息是要更改客户端的用户界面。 但我无法成功发送请求到服务器,并在客户端看到错误。 什么都没有发送,我从我的Web服务器的日志中读取它。Cross起源请求是什么意思?

这些都是在控制台上的错误信息:

[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起源请求意味着什么。在我的ajax请求中,来自前一个请求的区别可能会成功。

注意:在小提琴中第一个错误参考(tm,第420行)在js的第344行,第2个在第js行第11行。

爵士小提琴:http://jsfiddle.net/farukscan/6kUBy/

回答

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); 

否则,网址将假定为相对于当前网页的地址,因此浏览器正在尝试将localhost:5050视为文件夹名称。


而且,“跨越来源”是指未通过Same Origin Policy的网址。这是客户端JavaScript可以访问的地址的安全限制。

“Origin”是来自当前地址的协议,主机名和端口的组合。

+0

在我的情况下,我应该做的解决问题的方法是仅使用服务器上的函数名称作为“/ h”...我并没有打算进行跨源请求。谢谢。再次回答它和其他人。 – fsc