当前位置: 首页 > 面试题库 >

带有jquery.ajax()的跨域“授权”标头

盖锦程
2023-03-14
问题内容

我正在尝试发送跨域域并添加自定义的“授权”标头。请参见下面的代码。

错误:

XMLHttpRequest无法加载{url}。请求标头字段Access-Control-Allow-Headers不允许授权。

function loadJson(from, to) {
    $.ajax({
        //this is a 'cross-origin' domain
        url : "http://localhost:2180/api/index.php",
        dataType : 'json',
        data : { handler : "statistic", from : from, to : to
        },
        beforeSend : setHeader,
        success : function(data) {
            alert("success");
        },
        error : function(jqXHR, textStatus, errorThrown) {
            alert("error");
        }
    });
}

function getToken() {
    var cookie = Cookie.getCookie(cookieName);
    var auth = jQuery.parseJSON(cookie);
    var token = "Token " + auth.id + ":" + auth.key;
}

function setHeader(xhr) {
    xhr.setRequestHeader('Authorization', getToken());
}

我也尝试过:

headers : { 'Authorization' : getToken() },

在ajax请求中。

可能是jquery-ajax框架阻止了跨域身份验证?我怎样才能解决这个问题?

更新:

顺便说一句:是否有一种更安全的方法将auth.key存储在客户端,然后再存储在cookie中?getToken()将被更复杂的方法取代,该方法对正文,日期等进行哈希处理。


问题答案:

这是发出CORS请求的示例。如果您有权访问服务器(由于这是对localhost的请求,所以我假设您可以访问),则需要添加特定于CORS的响应标头。最简单的操作是添加以下响应标头:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization

还需要将服务器配置为响应HTTP
OPTIONS请求。您可以在此处了解有关发出CORS请求的更多信息:http
:
//www.html5rocks.com/en/tutorials/cors/




 类似资料:
  • 问题内容: 我有一个简单的PHP脚本,正在尝试跨域CORS请求: 但是我仍然得到错误: 请求标头字段不允许 我有什么想念的吗? 问题答案: 不允许作为可接受的值,请参阅此处的Mozilla文档。 您应该发送可接受的标头(而不是如星号所示)而不是星号。

  • 我已经尝试使用vb使用eventbrite api有一段时间了。net,我使用来使用api,但是它只返回当我使用postman调用具有相同头的相同方法时,它返回具有

  • 我正在尝试连接到FatSecret API。这是他们为oauth2授权提供的留档链接:https://platform.fatsecret.com/api/Default.aspx?screen=rapiauth2#using-token-api 我已经完成了第一步和第二步,现在我被困在第三步。我已经设法用“application/json”更新了标题,但我不确定我的调用是否包括我创建的令牌。我得

  • 我正在尝试使用“反应原生”中的功能从产品搜索 API 中获取信息。我已获得正确的访问令牌并将其保存到 State,但似乎无法在 GET 请求的授权标头中传递它。 到目前为止,我有以下情况: 我对代码的期望如下: < li >首先,我将从导入的API模块中< code >获取带有数据的访问令牌 < li >之后,我将< code>this.state的< code>clientToken属性设置为等

  • 有没有办法绕过授权?