jQuery ajax从本地文件发布以访问跨域不工作

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、

正如标题所说,我正在尝试使用jQuery AJAX调用访问(POST)web url,
http://host:port/...
http://localhost:8080/...
从本地HTML文件中,
c:\home.HTML
。我不能让它工作

我在谷歌上搜索过,也看到了一些问题,但我无法让它工作。我需要一些帮助。这是我到目前为止所做的尝试

  • 数据类型:jsonp
  • 跨域:对
  • 在我的响应中设置标题:
  • response.setHeader(“访问控制允许原点”,“*”);
    
    这三种浏览器都不工作——IE、FF或Chrome。请求从未到达服务器。以下是我看到的一些错误

  • 如果未使用jsonp,则无传输(IE)
  • NS\ U绑定\在FF中中止/加载内容时出错(NS\ U错误\未缓存文档)
  • 这是我的密码。我将感谢任何帮助。我使用的是
    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