【发布时间】:2014-11-01 14:57:04
【问题描述】:
我是 jQuery/AJAX 的新手。我有一个用于测试目的的小型应用程序,上面有一个按钮。当单击该按钮时,将与位于同一域中的服务器建立连接,以获取一些数据并发出警报。
问题:我的应用程序无法与服务器建立任何连接。以下屏幕截图来自谷歌浏览器中的开发者工具。
服务器有自己的自签名证书。如果我通过 Web 浏览器连接到服务器,我会收到如下所示的 SSL 证书警告。
如果我点击继续然后登录到服务器,那么现在我的应用程序也能够从服务器检索数据。(如果我点击我的网络应用程序上的按钮,它会提醒它从服务器获取的数据.)
问题:是否有任何解决方法,我可以绕过这个错误吗?为什么我通过 Web 浏览器登录到服务器后它会起作用?我的应用将在同一域中本地使用,它不是公共应用。
jQuery 代码:我有这个代码:
$('#mybutton').click(function(){
$.ajax({
type: "GET",
url: "https://192.168.150.33/Api/loc?jsonpCallback=myCallback",
dataType:"jsonp",
async: false,
beforeSend: function (request){
request.withCredentials = true;
request.setRequestHeader("Authorization", "Basic " + btoa('admin' + ":" + 'password'));
},
success: function(response){
alert('hi');
},
});
});
function myCallback(response){
data= JSON.stringify(response)
alert(data)
Here 是解决相同问题的帖子。据我了解this post根据它没有解决方案。任何建议都会有所帮助。谢谢
【问题讨论】:
-
“为什么我通过网络浏览器登录到服务器后它会起作用?” - 你没有“登录到服务器”,你已经告诉你的浏览器它应该忽略服务器提供的证书将来对该地址无效的事实。这“有效”,因为这正是在您的浏览器中添加此类异常的原因应该。
-
另见stackoverflow.com/questions/31058764/… 有更详细的答案。