javascript - 所有 jQuery ajax 调用的默认设置

标签 javascript jquery ajax header

我有一个 JS 客户端 (app.domain.com),它连接到一个用 rails 和 grape (api.domain.com) 编写的 API。 CORS 已设置,当在 api.domain.com 服务器上执行登录时,我在两个域之间有一个共享 cookie。

这个 JS 应用程序使用 Spine.js,所以一切都是用 CoffeeScript 编写的。 所以要发送删除请求,我只使用:

    @item.destroy

这将向 API 发送一个 DELETE 请求。但是 cookie 没有与请求 header 一起发送,所以我不得不将上面的代码行更改为这一行:

    $.ajax({
        url: "http://api.domain.com/tasks/" + @item.id,
        type: "DELETE",
        crossDomain: true,
        xhrFields: {
            withCredentials: true
        }
    })

这非常有效。它将随请求发送响应 header “Access-Control-Allow-Credentials:true”,以便提交 cookie 并验证操作。

但是,这样我将不得不为每个请求编写代码行,这非常耗时,而且还抵消了 Spine 框架的优势。

我知道可以在 jQuery 中设置默认的 ajax 设置,这样每个后续的 ajax 调用都将使用这些设置。所以我试过了:

jQuery.ajaxSetup({
headers: {
    "X-Requested-With": "XMLHttpRequest",
    "Access-Control-Allow-Credentials": "true"
    }, crossDomain: true
});

这与我手动为每个 ajax 调用设置的设置基本相同。 但是,尽管我在发送到 API 的请求中看到了这些 header (通过 Firebug ),但这种方法不起作用。

我错过了什么吗?

提前致谢!

达夫

最佳答案

在客户端应用程序的 Bootstrap 中执行此操作:

$.ajaxSetup({
  xhrFields: {
    withCredentials: true
  }
})

然后服务器需要用这个 cors 头响应:

Access-Control-Allow-Credentials: true

关于javascript - 所有 jQuery ajax 调用的默认设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948571/

相关文章:

javascript - 从缓存中清除 JavaScript 代码

javascript - ColdFusion 和 AJAX - 更新数据库

javascript - jQuery ajax 响应显示在浏览器中而不是传递给回调函数

c# - Javascript 确认或其他类型的确认

jquery - 在 JQuery 中将选择的背景颜色设置为选定的选项

javascript - 浏览器页面在 javascript 按钮单击事件后意外滚动到最顶部位置

JavaScript IP 范围验证第二个 ip 大于第一个 ip

javascript - 如何使用 jquery 强制单词更改大小写等以保留品牌?

javascript - 过滤数组时,JS 过滤器无法正常工作

JavaScript 异步 curry 函数 ES6