如何在jQuery中更改标题属性?

时间:2018-04-19 20:28:29

标签: jquery json post request http-headers

基本上,我有一些jQuery试图将一些JSON数据发布到服务器。这是Firefox发送时显示的标题。但是,如果我使用Firefox的“编辑和重新发送”功能,我可以强制它正确发送。如何更改我的代码以强制我想要的标题?我已经在服务器上启用了cors,如果只有标题是正确的,那么就完成了使其工作所需的一切。

以下是我的代码后跟标题:

Accept:text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8  
Accept-Encoding: gzip, deflate  
Accept-Language: en-US,en;q=0.5  
Connection: keep-alive  
Content-Length:31  
Content-Type: application/x-www-form-urlencoded  
Host: localhost:8080  
Upgrade-Insecure-Requests:1  
User-Agent:Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/59.0

失败(由代码发送)

Accept: application/json
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 41
Content-Type: application/json
Host: localhost:8080
Pragma: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0

工作(在FireFox中手动编辑标题)

{{1}}

1 个答案:

答案 0 :(得分:0)

dataType:不应该是MIME类型,它是jQuery知道如何解码的小类型列表之一。如果您使用dataType: "json",则会发送Accept: application/json,并在回复时自动致电JSON.parse()

要指定您要发送的数据的格式,请使用contentType:选项,该选项采用MIME类型。

$.ajax({
    url: "http://localhost:8080/users/login",
    method: 'POST',
    cors: true,
    data: dat,
    dataType: "json",
    contentType: "application/json",
    success: function (response) {
        alert('YAY');
    },
    failure: function (response) {
        alert('Error', 'Invalid Credentials');
    }
});