javascript - jQuery 和 CORS 在开放的远程服务器上总是失败

标签 javascript jquery ajax cors

我正在尝试使用 jQuery $.ajax() 方法在应该启用 CORS 的远程服务器上模拟 POST。

这个想法是提交一个包含用户名/密码的表单,并通过成功的身份验证获取服务器提供的 cookie。

这是 jQuery:

$.ajax({
    type: 'POST',
    crossDomain: true,
    async: false,
    url: this.url,
    data: {
        username: this.username,
        password: this.password
    },
    xhrFields: {
        withCreditentials: true
    },
    success: function(responseData, textStatus, jqXHR) {
        console.info(jqXHR.getAllResponseHeaders());
    },
    error: function(responseData, textStatus, errorThrown) {
        console.warn(errorThrown);
    }
});

这是响应 header :

HTTP/1.1 200 OK
Connection: close
Content-Type: text/html
Pragma: no-cache
Cache-control: no-cache,max-age=0,must-revalidate
Content-Encoding: gzip
Vary: Accept-Encoding
Transfer-Encoding: chunked

以及请求 header :

Accept: * / *
Accept-Encoding: gzip, deflate, sdch
Accept-Language: fr,en-US;q=0.8,en;q=0.6
Cache-Control: max-age=0
Connection: keep-alive
Host: my remote server (URL is hidden)

问题是我收到一个 console.warn 告诉我:

Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'URL'

我还尝试使用模拟 POST 的 Chrome 扩展:我放入了与 jQuery 中相同的数据,一切都成功了,从调用到提交表单后传递的 cookie。

我不明白我的 jQuery 为何无法加载 URL,但却给了我一个 200 OK !我不明白如何做对!

我哪里做错了?

最佳答案

看来您需要将 Access-Control-Allow-Origin: * header 添加到 api 响应 header 中。您的 REST 客户端(chrome 扩展)不像浏览器那样遵守 CORS 规则,这就是它工作的原因。

关于javascript - jQuery 和 CORS 在开放的远程服务器上总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906221/

相关文章:

ASP.NET 响应.重定向与 IIS7

javascript - 使用 Firefox 发送的 POST 请求中的字符编码问题

javascript - AJAX div 在没有警告调用的情况下不会更新,错误为 : b. 数据未定义

javascript - 如何在 Windows 7 上使用 NodeJS/PhantomJS/CasperJS

javascript - Dynamics CRM动态获取HTML web资源父控件

javascript - jQuery触发anchor的onclick事件而不发送浏览器到href

php - 无序列表-列表项位置

javascript - extJS 网格错误,未显示 JSON 数据

javascript - 需要垫片设置 - jquery.flot/jquery.flot.selection

javascript - SVG 不像传统的 DOM 那样工作吗?