gpt4 book ai didi

javascript - 当服务器不支持响应回调函数时,这种使用 JSONP 的跨域调用是否有效?

转载 作者:行者123 更新时间:2023-11-28 21:20:51 25 4
gpt4 key购买 nike

我希望使用 jQuery 进行跨域调用,并通过查询字符串传递参数来触发服务器执行操作(例如发送电子邮件、后台打印作业、启动咖啡机)。 我的问题是服务器不支持 JSONP 响应*,并且在我的时间范围内更改它是不可行的。

假设我的页面托管在 http://foo.com/test.htm 中,并且正在对 http://bar.com/service.svc 处的 Web 服务进行跨域调用。 `。启动电子邮件作业的 URL 如下(完全虚构):

var mailerUrl = "http://bar.com/service.svc?job=email&to=fred&type=outage";

经过思考,我想知道服务器不支持 JSONP 响应是否真的很重要,因为对 mailerUrl 的 GET 请求足以启动工作。

jQuery 代码将是这样的(我认为):

$.getJSON(mailerUrl + "&callback=?", function (json) { });

服务器将使用此 JSON 进行响应:

{ "d": { "EmailJob": true } }

请注意,响应并未包含在回调函数中。

jQuery 代码在收到响应后最终会失败,因为它不是 JSONP 格式。

但是,我想知道这是否会在所有主要现代浏览器(IE9、Chrome、Firefox4+ 和 Safari4+)中成功跨域?

最佳答案

答案是:不。试想一下,任何网站都可以仅仅因为您登录就从您的 Gmail 帐户加载 JSON 数据 - 这很糟糕,对吗?因此,浏览器会正确地阻止您跨域读取 JSON 数据,除非目标允许(通过 CORS 或支持回调)。

如果唯一的一点是发送跨域 GET 请求而不接收任何数据,则 new Image().src = "http://..."是更简单的方法。

关于javascript - 当服务器不支持响应回调函数时,这种使用 JSONP 的跨域调用是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6465874/

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