gpt4 book ai didi

asp.net - 为什么同域ajax请求添加jsonp回调参数?

转载 作者:行者123 更新时间:2023-12-01 00:46:35 26 4
gpt4 key购买 nike

好吧,这应该是一个相当简单的问题,我可能遗漏了一些明显的东西。我有一个简单的脚本向服务器发出请求:

var DTO = { 'path': path };
var url = 'default.aspx/Get';

var test;
$('#getInstance').click(function () {
$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: JSON.stringify(DTO),
contentType: 'application/json; charset=utf-8',
success: function (msg) {
test = msg;
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
}
});

});

这工作正常,因为它连接到服务器并取回数据,但有一个简单的问题。它将这个请求视为跨域请求,因此使用 jsonp。服务器代码在这里:

    [WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static MyObject Get(string path)
{
MyObject foo = new MyObject();

return foo;
}

通常这不会是一个问题,除了我正在访问 WebMethod,并且它没有返回 jsonp 响应的能力(这意味着它无法将回调函数附加到响应中。现在,如果这是手动响应,我可以对其进行破解并附加参数,但我正在利用内置序列化,因此无法弄乱响应。

帮助澄清。该页面托管于:

http://127.0.0.1:144/default.aspx

在 firebug 中看到的请求是:

http://127.0.0.1:144/default.aspx/Get?callback=jQuery1502768168154247801_1298656485388

让我强调一下这个代码是有效的。唯一的问题是 jQuery 将此请求视为跨域。但为什么呢?

更新:嗯,经过更多的时间和更多的测试,我已经将这个问题缩小到它是 jquery 1.5.1 中的一个错误。我用旧版本(所有 1.4 版本)做了一些测试,没有任何问题,请求是使用 JSON 发出的,并且成功收到了响应。他们可能会做出哪些更改来将此请求视为 CORS?

最佳答案

经过一番研究,终于确定了这个问题。正如我上次更新中所指出的,该问题与使用 jQuery 1.5 版本有关。当我没有想法时,我尝试了之前的 jQuery 版本,你知道吗,它按预期工作了。

当我准备提交错误报告时,我搜索了错误数据库并发现了一些与相同行为匹配的错误报告。事实证明,这是 jQuery 验证插件中的一个错误,影响了新的 jQuery 版本。

I posted a blog entry with an explanation

关于asp.net - 为什么同域ajax请求添加jsonp回调参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5120621/

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