gpt4 book ai didi

ajax - jQuery.Ajax "Access to restricted URI denied"解释?

转载 作者:行者123 更新时间:2023-12-03 23:04:45 26 4
gpt4 key购买 nike

我正在调查本地(文件://访问)html 应用程序对 .NET WCF 域服务的跨域使用。该应用程序使用 jQuery 进行 AJAX 调用。

如果服务器上没有身份验证(即匿名身份验证),我已成功检索到 JSON 格式的数据,其中包含 CORS“Access-Control-Allow-Origin: *” header ,以及不带 header 的 JSONP 格式的数据。

现在我试图了解身份验证和 CORS header 与 JSON(不是 JSONP)格式数据一起到位时的行为。

以下 jQuery 代码将向服务器发送请求,服务器又响应“HTTP/1.1 401 Unauthorized”。

$.ajax({
url: myUrl,
dataType: 'json',
cache: false,
complete: function () { /* do stuff */ },
timeout: 5000,
data: myData
});

以下 jQuery 代码不会向服务器发出请求,并立即抛出异常“访问受限 URI 被拒绝”,代码 1012。

$.ajax({
url: myUrl,
dataType: 'json',
cache: false,
complete: function () { /* do stuff */ },
timeout: 5000,
username: "chris",
password: "password",
data: myData
});

我理解并期待第一种情况。谁能向我解释第二种情况的异常(exception)情况?我预计至少会提出这个请求。

编辑:Grrr,这是 FF 10.0.2 中的。 Chrome 的表现似乎符合我的预期,所以这是一个 FF 问题吗?

最佳答案

如果您在跨源请求中使用 cookie 或 HTTP 基本身份验证用户名/密码字段等凭据,则还需要将 XHR 上的“withCredentials”标志设置为 true。在 jQuery 中,这是通过 $.ajax 调用上的 xhrFields 属性来完成的。更改您的代码以读取

$.ajax({
url: myUrl,
dataType: 'json',
cache: false,
complete: function () { /* do stuff */ },
timeout: 5000,
username: "chris",
password: "password",
data: myData,
xhrFields: { withCredentials: true }
});

此外,另一端的服务器不能使用“*”作为具有凭据的 Access-Control-Allow-Origin header 。相反,它必须为发送给它的 Origin header 提供精确匹配。

关于ajax - jQuery.Ajax "Access to restricted URI denied"解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9479422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com