gpt4 book ai didi

javascript - 跨域ajax请求自动使用jsonp

转载 作者:行者123 更新时间:2023-11-30 18:43:18 24 4
gpt4 key购买 nike

我如何告诉 jQuery 自动对跨域 ajax 请求使用“jsonp”,同时它一直对同域请求使用“json”?我想用 javascript 编写一个客户端库,它只在必要时使用 jsonp。让我们以这个小片段为例:

jQuery.ajax(url, {
dataType: "jsonp"
});

当数据类型为“jsonp”时,jquery 始终使用 jsonp,但已经自动检测它是否可以发送正常的 Ajax 请求(对于同域请求)或者是否必须使用 javascript 注入(inject)(对于跨域请求)。

所以 jQuery 似乎已经能够自动检测到这一点并决定使用哪种技术。但是当可以进行标准 Ajax 请求时,没有必要使用 jsonp,所以我只想对跨域请求使用“jsonp”。我该怎么做?

或者也许可以询问 jQuery 一个 url 是否跨域?然后我可以自己检查并使用不同的数据类型调用 jQuery.ajax。

最佳答案

你可以使用类似 this 的东西然后检查方案/主机名是否匹配。解析 url 的一种简单替代方法是创建一个 a 元素并让浏览器为您提供 url 部分。

function sameOrigin(url){
var link = document.createElement("a");
link.href = url;

return ((link.protocol + link.host) === window.location.protocol + window.location.host);
}


var url = "http://stackoverflow.com/questions/6227584/jquery-automatic-usage-of-jsonp-for-cross-domain-ajax-requests";
if (sameOrigin(url)){
// use json
}else{
// use jsonp
}

关于javascript - 跨域ajax请求自动使用jsonp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6227584/

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