我有点陷入困境。
我正在开发一个小型移动网站。我试图使用ajax调用来调用web服务,但浏览器一直阻止我的调用。如果我使用标签启动Chrome ...“ - allow-file-access-from-files --disable-web-security”那么这个调用就可以了。我没有任何问题。
现在我的问题是,如果我托管网站,浏览器将阻止我的ajax调用,用户无法例如登录或检索信息。我在下面提出我的ajax电话......
$.ajax({
async: true,
beforeSend: function () {
},
complete: function () { },
type: 'POST',
url: 'https://MySecretUrl.com/login?format=json',
contentType: 'application/json',
dataType: 'json',
data: '{"UserId":"mySecretUserId","Password":"mysecretPassowrd"}',
success: function (resultMessage) {
if (resultMessage.WasSuccessful == true) {
alert('YAY');
} else {
alert('Semi Yay');
}
},
error: alert('OOOOPS')
});
有没有人知道从Web服务获取信息的解决方法,而没有任何浏览器阻止ajax调用?
任何建议都将不胜感激。
提前感谢您的帮助。
修改
嗨,大家好,所以我做了一些挖掘并发现了以下内容。
当使用浏览器安全性发出请求时,该调用会将POST更改为OPTIONS。这被称为预检请求。我找到的一个解决方法是,如果您正在进行GET调用,那么您可以使用jsonp作为您的数据类型。但现在我的问题是它与POST不兼容。是否有任何修复不需要更改Web服务?
答案 0 :(得分:1)
是否有任何修复不需要更改Web服务?
没有。如果无法更改网络服务,您唯一的选择是不使用浏览器发出此请求。
您必须使服务器以可以跨域接受的格式返回数据,或者不要使用浏览器发出跨域请求。