我有一个使用webtrends的exctraction API的javascript / jQuery REST应用程序,IE除外。
我通过SSL发送身份验证 - https:// [域名] \ [用户名]:[密码] @ ws.webtrends.com / v3 / Reporting / profiles / 10609 / Keymetrics /?start_period = current_day-1& end_period = CURRENT_DAY&安培; period_type = AGG&安培;格式= JSON
当我查看开发者工具(F12)>在“网络”选项卡下,Internet Explorer将反斜杠(“\”)更改为正斜杠(“/”),这会导致浏览器查找具有域名值的网站。
所有其他浏览器都不会更改反斜杠。
$.ajaxSetup({
crossDomain: true,
async: false,
contentType: "application/jsonp",
dataType: "jsonp",
type: "POST",
cache: false,
beforeSend: function(xhr) {
xhr.overrideMimeType("application/jsonp; charset=UTF-8");
},
headers: {
"Authorization": mBaseSixtyFourVar
},
url: mXferObj.mUrl
});
$.ajax({
success: function(mInfo){
mRecvObj = mInfo;
alert(mRecvObj.data[0].measures.NewVisitors+"");
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
alert("xmlHttpRequest.readyState: "+xmlHttpRequest.readyState+", textStatus: "+textStatus+", errorThrown: "+errorThrown+", mXferObj.mUrl: "+mXferObj.mUrl);
}
});
我尝试了以下内容:
将其插入ajaxsetup
data: "{'domain':'domainname','username':'blabla','password':'blabla'}",
使用PHP,我尝试过使用curl,但除了bool(false)之外没有返回任何内容:
我尝试了file_get_contents(),但收到了开放流错误。
我有这个在FireFox,Opera,Safari,Chrome中工作 - 为什么IE总是坚持完美?
任何帮助将不胜感激,并提前感谢
根据要求,这是我尝试过的一个curL代码:
if (!function_exists('curl_init')){
die('CURL is not installed!');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
var_dump $output;
我尝试了以下选项:
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, '[username]:[password]')
我尝试了很多不同的东西,那是最后一次
答案 0 :(得分:0)
<强>更新强>
鉴于您对XMLHTTPRequest
中提供用户名和密码的评论,我做了一些研究,发现jQuery 支持此功能。您只需将username
和password
参数添加到您的请求中即可:
$.ajaxSetup({
crossDomain: true,
async: false,
contentType: "application/jsonp",
dataType: "jsonp",
type: "POST",
cache: false,
beforeSend: function(xhr) {
xhr.overrideMimeType("application/jsonp; charset=UTF-8");
},
headers: {
"Authorization": mBaseSixtyFourVar
},
url: mXferObj.mUrl,
username: "yourUsername",
password: "yourPassword"
});
原始答案
简而言之,Internet Explorer不支持此功能。它已在2004年发布的先前安全更新中删除:
http://support.microsoft.com/kb/834489
默认情况下,从安全更新832894发行版开始发布的Windows Internet Explorer版本不支持使用安全套接字层(SSL)或HTTPS URL处理HTTP和HTTP中的用户名和密码。 Internet Explorer或Windows资源管理器中不支持以下URL语法: HTTP(S)://用户名:password@server/resource.ext
备选方案可能包括向您自己的服务器发出AJAX请求,然后在服务器端执行请求,以托管代码执行请求。例如,如果您选择的语言是C#,则可以使用HttpWebRequest
并提供正确的NetworkCredentials
信息来完成请求。