如何使用js或jQuery向ajax请求添加自定义HTTP标头

时间:2016-02-10 09:14:10

标签: javascript jquery ajax

有没有人知道如何使用JavaScript或jQuery添加或创建自定义HTTP标头?

我正在使用下面的代码,但它给了我 405方法不允许。 我正在使用 POST 方法,但在请求方法中,但它在请求方法中显示 OPTION 。 状态代码:405方法不允许,当我使用邮递员时它正在工作并向我显示200 ok状态代码。有没有人帮助我发生了什么问题。 我在HTML中使用下面的代码。

$(document).ready(function () {
    $.ajax( {
        url: 'http://api.XXXXXXXXXX.com/SharedServices/SharedData.svc/rest/Authenticate',
        data: {
            "ClientId": "ApiIntegration",
            "UserName": "XXXXX",
            "Password": "XXXXX@123",
            "EndUserIp": "192.168.1.10"
        },
        method: 'POST',
        dataType: 'json',
        headers: {
            "contentType": "application/json",
            "cache-control": "no-cache"},

        success: function (response) {
            console.log(response);
        },
    });
})
如果我的代码中存在问题,

什么是正确的jQuery代码。 这是我正在使用的邮差女巫的截图。

enter image description here

2 个答案:

答案 0 :(得分:2)

当您提出跨源请求时,服务器必须提供access control headers (CORS)以授予您读取响应的JavaScript权限。

典型的请求被视为简单,但如果您向其添加某些特征,那么它就会变得简单并变为preflighted request

其中一个特征是"它在请求中设置自定义标题",因此通过添加自定义标题,您已使其变得复杂。

在浏览器发出POST请求之前,它会发送预检请求,这是一个OPTIONS请求。

它必须收到来自服务器的响应,在发出POST请求之前允许它发出POST请求。

当浏览器向服务器发出OPTIONS请求时,它当前返回错误,说明"您不能向该URL发出OPTIONS请求!"。

您需要更改服务器:

  • 接受OPTIONS请求
  • 使用授予POST请求权限的标头进行响应

答案 1 :(得分:0)

jQuery代码中没有问题,这是因为您提出了跨域请求。尝试以这种方式使用https://www.youtube.com/watch?v=EPSjxg4Rzs8