bre*_*rer 5 authentication jquery json get xmlhttprequest
我已经在stackoverflow上查看了以下问题,但我没有尝试做什么.
这是我目前拥有的代码:
$(document).ready(function() {
$.ajax({
url: 'http://sample.domain.com/script.php?name1=value1&jsonp=?',
type: 'GET',
dataType: 'json',
contentType: "application/json",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authentication", "Basic ZnJvbWFwcGx********uOnRoM24zcmQ1UmgzcjM=") //Some characters have been replaced for security but this is a true BASE64 of "username:password"
},
success: function(data){
alert(data);
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我拥有的子域名受.htpasswd文件的密码保护.使用base64编码中使用的用户名/密码组合,网站的登录对我来说很好.
我在不同的域上运行此脚本而不是url所在的域,这就是为什么我有jsonp =?在网址中
从浏览器中的控制台获取的响应是:
GET http://sample.domain.com/script.php?name1=value1&jsonp=jsonp1334177732136 401 (Authorization Required)
JSONP 使用脚本标签代理。它不支持自定义标头。您能控制终点吗?如果是这样,请考虑启用 CORS,或在 GET 字符串中传递身份验证密钥。
使用 jsonp 时,JQuery 将您的 URL“ajax”请求转换为:
<script src="[endpoint]"></script>
Run Code Online (Sandbox Code Playgroud)
然后它编写一个随机函数
var json9409d0sf0d9s0df90 = function() {
//some callback logic here.
}
Run Code Online (Sandbox Code Playgroud)
并附加 ?callback=json9409d0sf0d9s0df90
然后你的服务器说
echo $_GET['callback] . "(" . $json . ")";
Run Code Online (Sandbox Code Playgroud)
并将其作为响应发回
json9409d0sf0d9s0df90({some: data});
Run Code Online (Sandbox Code Playgroud)
由浏览器执行并由 jQuery 的神奇处理程序处理,使其像普通的 ajax 回调一样响应。
AFAIK,<script src=""></script>资产加载不会采用任何标准浏览器的自定义标头。
| 归档时间: |
|
| 查看次数: |
28447 次 |
| 最近记录: |