Javascript 使用jQuery.ajax请求和jsonp进行基本身份验证

Javascript 使用jQuery.ajax请求和jsonp进行基本身份验证,javascript,jquery,jsonp,basic-authentication,Javascript,Jquery,Jsonp,Basic Authentication,我有一些本地html/js文件,我想通过https调用一些远程服务器,并最终对请求使用基本身份验证 我遇到两个问题。首先,如果我没有为数据类型指定'jsonp',jQuery.ajax()请求将返回错误: 对受限URI的访问被拒绝代码: 1012 我的请求是否被认为是跨域的,因为我的主工作文件存储在本地,但从其他地方的服务器检索数据 很好,我更新了呼叫,现在看起来像: $.ajax({ url: myServerUrl, type: "GET", dataTyp

我有一些本地html/js文件,我想通过https调用一些远程服务器,并最终对请求使用基本身份验证

我遇到两个问题。首先,如果我没有为数据类型指定'jsonp',jQuery.ajax()请求将返回错误:

对受限URI的访问被拒绝代码: 1012

我的请求是否被认为是跨域的,因为我的主工作文件存储在本地,但从其他地方的服务器检索数据

很好,我更新了呼叫,现在看起来像:

$.ajax({ 
     url: myServerUrl,
     type: "GET", 
     dataType: "jsonp", // considered a cross domain Ajax request if not specified
     username: myUsername,
     password: myPassword,

     success: function(result)
     {
        // success handling
     },
     error: function(req, status, errThrown){
         // error handling
     }
})
因为我需要使用基本身份验证,所以我会传入用户名/密码,但是如果我监视请求,我看不到它被设置,另外,服务器会发送错误响应,因为它没有预期的信息

另外,因为我已经设置了
jsonp
beforeSend
不会被调用


如何使用此请求的基本身份验证传递凭据?

简短的版本是您不能这样做。你的怀疑是正确的,因为你是本地人,而这些文件是远程的,你无法访问它们,你正在被服务器阻止。解决这个问题的办法是,但这似乎并不适用于你的情况

JSONP的工作原理不同,它是一个通过
标记include获取文件的GET请求,因此您不需要发送特殊的头或任何东西


您需要通过您所在的服务器(运行此脚本的域)或其他代理选项代理请求,但从客户端到另一个域被阻止,主要是出于安全原因。

我认为您必须添加某种服务器代理。JSONP只是使用脚本标记的一种特殊方式。因此,它不允许设置任意标题。当然,您不能进行交叉源XHR。

尝试这样做。这模拟了基本身份验证请求。

这是正确答案,JSONP不能包含基本身份验证所需的用户/PWD头。因此,如果您这样做,您将受到谴责,如果您不这样做,您将受到谴责:)此语法的使用将在构建M59的Chrom中被阻止: