jQuery ajax POST从本地文件访问跨域无法正常工作

use*_*505 5 ajax jquery cross-domain cors

正如标题所说,我正在尝试使用jQuery AJAX调用Web URL http://host:port/...http://localhost:8080/...本地HTML文件来访问(POST)c:\home.html.我无法让它发挥作用.

我做谷歌,也看到了几个问题,但我无法让它工作.我需要一些帮助.这是我到目前为止所尝试的内容.

  1. dataType:jsonp
  2. crossDomain:true
  3. 在我的回复中设置标题:
response.setHeader("Access-Control-Allow-Origin", "*");
Run Code Online (Sandbox Code Playgroud)

这三种浏览器都不起作用 - IE,FF或Chrome.请求永远不会到达服务器.以下是我看到的一些错误.

  1. 如果不使用jsonp,则不传输(IE).
  2. 在FF中加载内容(NS_ERROR_DOCUMENT_NOT_CACHED)时出现NS_BINDING_ABORTED /错误

这是我的代码.我将不胜感激任何帮助.我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)

一个例子是一个完美的指针.

use*_*505 4

我想我的代码被我尝试的所有不同解决方案弄乱了。我终于能够通过设置标题来让它工作(推荐并适用于其他人的解决方案)。为了让它工作,我所要做的就是将以下内容添加到我的 REST 服务响应中。

\n\n
response.setHeader("Access-Control-Allow-Origin", "*");\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:

\n\n

我以为我已经弄清楚了这一点,但我还没有。不仅仅是设置标题。无论如何,根据我的具体情况。我试图在硬盘上运行我的应用程序(html、js),特别是在 Chrome 上,并尝试访问云上可用的 Web 服务。

\n\n

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

\n\n
--disable-web-security -\xe2\x80\x93allow-file-access-from-files\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

谢谢各位的意见。

\n