我需要提出跨域请求并提供Cookie /凭据才能访问其他域。我在Jquery中使用JSONP来实现这一目标。我的测试已经成功,因为我可以看到请求在Chrome的开发人员工具的“网络”标签中返回200。
问题是我收到一条错误,指出没有调用Callback函数。我理解这意味着远程服务器没有响应回调函数。但是,这是预期的,因为服务器没有实现JSONP,我只是尝试使用JSONP从我不拥有/控制的域中获取数据。
我的问题是,因为我得到200,有没有办法访问数据?即使我必须在错误函数中这样做?
这是我的代码:
$.ajax({
xhrFields: {
withCredentials: true
},
dataType: 'jsonp',
jsonp: false,
cache: true,
type: "GET",
timeout: 5000,
url: "https://remote.domain.com/path/search",
data: 'keyword=ramy-testing',
success: function(data, textStatus, XMLHttpRequest){
console.log('Error: ' + textStatus);
},
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status); //displays "200" in alert window
alert(xhr.statusText); //displays "success" in alert window
alert(xhr.responseText); //displays "undefined" in alert window
alert(thrownError); //displays "Error: [callback name] was not called"
}
} );
答案 0 :(得分:0)
这无法完成。
服务器的响应不是JSONP,它只是JSON对象。回调没有被调用(因为它不存在)并且响应失败。
如果远程服务器不允许,则无法绕过同源策略。