如何在Windows 8 HTML / JavaScript应用中加载需要基本身份验证的外部网站?
我发现您无法使用http://username:password@host/
形式的网址。
答案 0 :(得分:1)
为了加载我尝试加载的URL,我必须使用webview或x-ms-webview
并调用它的navigateWithHttpRequestMessage
函数才能传递基本身份验证标头。< / p>
这导致了以下代码结构:
function ready(element, options) {
var webview = document.querySelector('[data-hook~="camera"]');
webview.navigateWithHttpRequestMessage(buildRequest());
}
function buildRequest() {
var username = 'username',
password = 'password',
Crypto = Windows.Security.Cryptography,
Http = Windows.Web.Http,
request,
buffer,
token;
request = new Http.HttpRequestMessage(
Http.HttpMethod.get,
new Windows.Foundation.Uri('http://ipcamera/'));
buffer = Crypto.CryptographicBuffer.convertStringToBinary(
[username, password].join(':'),
Crypto.BinaryStringEncoding.utf8);
token = Crypto.CryptographicBuffer.encodeToBase64String(buffer);
request.headers.authorization = new Http.Headers.HttpCredentialsHeaderValue('basic', token);
return request;
}
需要注意的是,没有任何DOM就绪事件似乎会触发,因此如果您需要与外部网站进行交互,则必须使用计时器。