0

我正在针对 100% 工作的 Chrome Postman 测试 WebSEAL 安全的 RESTful 服务。我根据需要传入基本身份验证凭据并发送请求。

浏览器无授权提示,响应无误返回预期结果。

但是,当我尝试在 jQuery 中执行此操作并通过浏览器运行它时,我一无所获,出现异常 CORS 错误和其他我没想到的授权 401 错误。

在我看来,Postman 生成的 XMLHttpRequest 字符串与我通过 JavaScript 中的任何 AJAX 框架生成的字符串完全相同,但 Postman 成功了,而普通的 JavaScript 却没有。

这里有什么区别?我完全迷失了。

// jQuery
var authorization = basic_auth('username', 'password1'),
    url = 'https://url.domain.name/service.svc';


$.ajax({
    url: url,
    method: 'GET',
    xhrFields: {
        withCredentials: true
    },
    beforeSend: function (req) {
        req.setRequestHeader('Authorization', authorization);
        req.setRequestHeader('Content-Type', 'application/json');                
    },
    success: function (s) {

    }
});

// XMLHttpRequest
var xml = new XMLHttpRequest(),
    authorization = basic_auth('username', 'password1'),
    url = 'https://url.domain.name/service.svc';
xml.open('GET', url, true);
xml.setRequestHeader('Authorization', authorization);
xml.setRequestHeader('Content-Type', 'application/json');
xml.setRequestHeader('Content-Length', 1000);
xml.onreadystatechange = function () {
    xhrResult(httpRequest);
};        
xml.send(null);

更新与解决

默认情况下,Chrome 不允许来自本地主机的 XS-XHR。

4

0 回答 0