正如标题所说,我正在尝试使用jQuery AJAX调用访问(POST)Web url,http://host:port/...
或本地HTML文件中的http://localhost:8080/...
,c:home.html
。我无法让它工作。
我做了谷歌,也在这里看到了几个问题,但我无法让它工作。我在这里需要一些帮助。这是我到目前为止尝试过的。
- 数据类型: jsonp
- 跨域:真
- 在我的响应中设置标题:
response.setHeader("Access-Control-Allow-Origin", "*");
这三种浏览器都无法正常工作 - IE,FF或Chrome。请求永远不会到达服务器。以下是我看到的一些错误。
- 如果不使用 jsonp,则不使用传输 (IE)。
- NS_BINDING_ABORTED/在 FF 中加载内容 (NS_ERROR_DOCUMENT_NOT_CACHED) 时出错
这是我的代码。我将不胜感激任何帮助。我正在使用jquery-1.8.2.min.js
.
var http_host = "http://localhost:8080";
function su (pc, p) {
var suUrl = http_host + "/ps/api/v2/authorize.json";
$.ajax({
type: 'POST',
url: suUrl,
data: {
phone_cell: pc,
password: p,
},
dataType: "json",
crossDomain: true,
success: osu,
error: oe
});
return false;
}
function osu (d) {
console.log(d);
}
function oe(xhr, ts, et) {
alert("ServerError: " + et);
}
一个例子将是一个完美的指针。
我想我的代码在我正在尝试的所有不同解决方案中都搞砸了。我终于能够让它在设置标题的情况下工作(推荐并为其他人工作的解决方案)。要使其工作,我所要做的就是将以下内容添加到我的 REST 服务响应中。
response.setHeader("Access-Control-Allow-Origin", "*");
更新:
我以为我想通了,但我没有。它不仅仅是设置标题。无论如何,在我的具体情况中。我试图在硬盘驱动器上运行我的应用程序(html,js),特别是在chrome上,并尝试访问云上可用的Web服务。
这是我最终解决问题的方式。我启动了带有以下参数的铬。
--disable-web-security -–allow-file-access-from-files
就像我之前提到的,这个应用程序实际上是一个桌面应用程序,将作为chromium嵌入式框架的一部分运行。
感谢每个人的投入。
您无法从本地文件发出跨域请求,因为它不在域中。您需要在本地 Web 服务器实例上托管C:home.html
才能使其正常工作。