jQuery ajax从本地文件发布以访问跨域不工作
正如标题所说,我正在尝试使用jQuery AJAX调用访问(POST)web url,jQuery ajax从本地文件发布以访问跨域不工作,ajax,jquery,cross-domain,cors,Ajax,Jquery,Cross Domain,Cors,正如标题所说,我正在尝试使用jQuery AJAX调用访问(POST)web url,http://host:port/...或http://localhost:8080/...从本地HTML文件中,c:\home.HTML。我不能让它工作 我在谷歌上搜索过,也看到了一些问题,但我无法让它工作。我需要一些帮助。这是我到目前为止所做的尝试 数据类型:jsonp 跨域:对 在我的响应中设置标题: response.setHeader(“访问控制允许原点”,“*”); 这三种浏览器都不工作——IE、
http://host:port/...
或http://localhost:8080/...
从本地HTML文件中,c:\home.HTML
。我不能让它工作
我在谷歌上搜索过,也看到了一些问题,但我无法让它工作。我需要一些帮助。这是我到目前为止所做的尝试
response.setHeader(“访问控制允许原点”,“*”);
这三种浏览器都不工作——IE、FF或Chrome。请求从未到达服务器。以下是我看到的一些错误
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);
}
例如,一个完美的指针。您不能从本地文件发出跨域请求,因为它不在域上。您需要在本地Web服务器实例上托管
C:\home.html
,才能使其正常工作。我想我的代码与我尝试的所有不同解决方案都弄乱了。我最终能够通过设置标题使其工作(推荐的解决方案,对其他人有效)。我所要做的就是将以下内容添加到我的REST服务响应中
response.setHeader("Access-Control-Allow-Origin", "*");
更新:
我想我已经弄明白了,但我还没弄明白。不仅仅是设置标题。无论如何,在我的特殊情况下。我试图在硬盘上运行我的应用程序(html,js),特别是在chrome上,并试图访问云上可用的web服务
下面是我最终解决这个问题的方法。我使用以下参数启动了chrome
--disable-web-security -–allow-file-access-from-files
正如我前面提到的,这个应用程序实际上是一个桌面应用程序,将作为chromium嵌入式框架的一部分运行
感谢各位的参与。该解决方案是桌面应用程序的一部分,并进入CEF(Chromium Embedd框架)。所以我首先尝试让它在Chrome上运行,最终将它转移到CEF。关键是我不能让本地web服务器运行。@user977505那么你不能提出跨域请求。@Jivings你的回答部分正确,但你忘记了一件重要的事情:如果你的请求没有执行飞行前请求,你可以从本地文件执行跨域请求。这可以在许多浏览器(包括chrome和IE8)中通过遵守两条规则来实现:请求不设置自定义HTTP头,如“application/xml”或“application/json”等。请求方法必须是GET、HEAD或POST中的一种。如果是POST,则内容类型应为application/x-www-form-urlencoded、multipart/form data或text/plain