gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 05:36:28 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com