简体   繁体   English

XMLHttpRequest和jQuery AJAX方法之间的响应标头区别

[英]Response header difference between XMLHttpRequest and jQuery AJAX method

Dears my problem is not duplicate. 亲爱的我的问题不是重复的。

code: 码:

var data = {'userId': window.cookie.get('userId'),
    'sessionId': window.cookie.get('sessionId')}

$.post(window.DbUrl + '/test', data, function (e) {
    console.log(e);
});

I try to send ajax with jquery post and response is: 我尝试用jQuery post发送ajax,响应为:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Origin, Content-Type, X-Auth-Token, Authorization
Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin:https://localhost:8080
Connection:keep-alive
Content-Length:1011
... 

code: 码:

var formdata = new FormData();
formdata.append('sessionId', window.cookie.get('sessionId'));
formdata.append('userId', window.cookie.get('userId'));
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress", selff.myProgressHandler, false);
ajax.addEventListener("load", myCompleteHandler, false);
ajax.addEventListener("error", myErrorHandler, false);
ajax.addEventListener("abort", myAbortHandler, false);
ajax.open("POST", window.DbUrl + '/test',true);
ajax.send(formdata);

I try with XMLHttpRequest in same URL response is: 我尝试在相同的URL响应中使用XMLHttpRequest是:

Allow:POST
Connection:keep-alive
Content-Length:4
Content-Type:text/html; charset=utf-8

In the nodejs express server, missing Access-Control-Allow-* headers. 在nodejs express服务器中,缺少Access-Control-Allow-*标头。

But when ajax with XMLHttpRequest to php server every thing is Ok. 但是,当使用XMLHttpRequest将ajax发送到php服务器时,一切都很好。

nodejs server: nodejs服务器:

app.post('/test', function (req, res) {
    res.setHeader('Access-Control-Allow-Origin', 'https://localhost:8080');
    res.setHeader('Access-Control-Allow-Credentials', 'true');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE, OPTIONS');
    res.setHeader('Access-Control-Allow-Headers', 'Origin, Content-Type, X-Auth-Token, Authorization');
    res.end('welcome');
});

php server is ok: php服务器还可以:

<?php
header('Access-Control-Allow-Origin: https://localhost:8080');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token, Authorization');

?>wellcome

What is the problem? 问题是什么? why php server is ok both nodojs is not, why jquery ok in any server? 为什么php服务器可以正常使用,两个nodojs都不可以,为什么jquery在任何服务器上都可以?

I don't know the reason but use the cors package if you want to fix it. 我不知道原因,但如果要修复它,请使用cors软件包。 Because the package has trigger on express request, send header before you send manual. 由于包裹在快递请求中触发,因此在发送手册之前先发送标题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM