【发布时间】:2012-12-07 13:49:21
【问题描述】:
我想调用通过基本身份验证对用户进行身份验证的 OData .NET Web 服务。
我使用以下 ajax 调用:
var fullUri = APIUri + "?$format=json";
$.ajax({
url: fullUri,
contentType: "application/json",
dataType: "jsonp",
type: 'GET',
jsonp: '$callback',
beforeSend: function setHeader(xhr) {
xhr.setRequestHeader('Authorization', token);
},
success: callback,
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError);
},
});
结果对我来说无法使用:
- 由于 CORS,调用被阻止(直到我将粘贴 API url 并尝试在 chrome 中加载它)。我尝试将本地 html 文件和 html 文件上传到同一个域/端口,但身份验证失败(根据 Chrome 控制台)。
- 在 Chrome 地址栏中输入服务 URL 后,Chrome 会要求我提供登录名和密码。如果我输入它们,即使我在 beforeSend 中分配它们,它们也会被缓存和使用。如何阻止这种行为?
我已经尝试了很多如何配置 jsonp、标头等的示例,但还没有找到可行的解决方案。
IIS 服务器响应标头也使用“Access-Control-Allow-Origin” value="*" 进行配置。
【问题讨论】: