我有一个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)
这里出了什么问题。跨源请求是什么意思。我的 ajax 请求与我可以成功执行的上一个请求有何不同。
注意:在 fiddle 中,第一个错误引用(tm,第 420 行)位于 js 的第 344 行,第二个错误引用位于 js 的第 11 行。
js fiddle :http://jsfiddle.net/farukscan/6kUBy/
最佳答案
错误源于 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
视为文件夹名称。
并且,“跨源”是指未通过 Same Origin Policy 的 URL 。这是对客户端 JavaScript 可以访问的地址的安全限制。
“来源”是当前地址的协议(protocol)、主机名和端口的组合。
关于javascript - 跨源请求是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23817030/