gpt4 book ai didi

javascript - 跨源资源共享 (CORS) 问题

转载 作者:可可西里 更新时间:2023-11-01 13:11:20 31 4
gpt4 key购买 nike

我们有一些网络服务返回 xml+atom 响应。它们托管在 SAP NetWeaver Gateway 应用程序服务器上。他们需要 BASIC 身份验证才能访问它们。响应包含以下 header 以支持 CORS:

access-control-allow-origin: *
access-control-allow-methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
access-control-allow-headers: Content-Type
access-control-max-age: 1728000

我们有一个 HTML5 应用程序,它使用 jquery 来调用服务,如下所示:

var url = "http://mytesturl.com/test/";
$.ajax({
url: url,
async: true,
contentType:"application/atom+xml",
type: "GET",
crossdomain: true,
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', make_base_auth(uname, passwd));
}
})
.done(function( data, textStatus, jqXHR ){alert("success");})
.fail(function( jqXHR, textStatus, errorThrown ){
console.log(jqXHR.status);
alert(errorThrown + jqXHR.status);
});

尽管服务器响应中出现了 header ,但我们继续收到如下 CORS 错误:

Failed to load resource: the server responded with a status of 401 (Unauthorized)
Failed to load resource: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8383' is therefore not allowed access.

用户名(uname)和密码(passwd)正确。如果我尝试使用 RestClient 之类的工具调用该服务,我可以在响应中看到 header 。我已尝试在 Chrome 版本 31.0 和 Safari 版本 6.0.5 中进行测试。我不确定缺少什么。任何有助于解决问题的建议都会很棒。

谢谢。

最佳答案

您似乎忘记了在允许的 header 列表中包含 Authorization header :

access-control-allow-headers: Content-Type, Authorization

您的客户端代码正在发送一个 Authorization header (基本身份验证内容),因此服务器必须在 CORS 级别明确允许这样做。

还要确保服务器实际响应来自客户端的 OPTIONS 动词请求的这些 header 。

关于javascript - 跨源资源共享 (CORS) 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859118/

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