来自本地文件的jQuery ajax POST无法访问跨域

就像标题所说的那样,我正在尝试使用jQuery

AJAX调用http://host:port/...或访问http://localhost:8080/...本地HTML文件来访问(POST)c:\home.html。我无法正常工作。

我做了Google,在这里也看到了几个问题,但无法正常工作。我需要一些帮助。到目前为止,这是我尝试过的。

  1. dataType:jsonp
  2. crossDomain:正确
  3. 在响应中设置标题:

    response.setHeader(“Access-Control-Allow-Origin”, “*”);

三种浏览器均无法运行-IE,FF或Chrome。该请求永远不会到达服务器。这是我看到的一些错误。

  1. 如果不使用jsonp,则不传输(IE)。
  2. 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", "*");

更新:

我以为我知道了,但我没有。它不仅仅是设置标题。无论如何,在我的特定情况下。我试图从专用于chrome的硬盘驱动器上运行我的应用程序(html,js),并尝试访问云上可用的Web服务。

这是我终于解决问题的方法。我使用以下参数启动了chrome。

--disable-web-security -–allow-file-access-from-files

就像我之前提到的,这个应用程序实际上是一个桌面应用程序,它将作为Chrome嵌入式框架的一部分运行。

谢谢各位的意见。

以上是 来自本地文件的jQuery ajax POST无法访问跨域 的全部内容, 来源链接: utcz.com/qa/406669.html

回到顶部