繁体   English   中英

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

[英]Basic Authentication with jQuery.ajax request and jsonp

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

我遇到两个问题。 首先,如果我没有为dataType指定'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 ,但这似乎并不适用于你的情况......

JSONP的工作方式不同,它是通过<script>标记包含的GET请求来获取文件,因此您不会发送特殊标题或任何内容。

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

尝试使用http:// user:password @ restservice 这模仿了基本身份验证请求。

我想你必须添加某种服务器代理。 JSONP只是使用脚本标记的一种特殊方式。 因此,它不允许设置任意标头。 当然,你不能做一个跨性别的XHR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM