XMLHttpRequest和jQuery AJAX方法之间的响应头区别(Response header difference between XMLHttpRequest and jQuery AJAX method)

我的问题不重复。

码:

var data = {'userId': window.cookie.get('userId'), 'sessionId': window.cookie.get('sessionId')} $.post(window.DbUrl + '/test', data, function (e) { console.log(e); });

我尝试用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 ...

码:

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);

我尝试与XMLHttpRequest在同一个URL响应是:

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

在nodejs express服务器中,缺少Access-Control-Allow-*标头。

但是,当使用XMLHttpRequest到php服务器的每一件事情都是好的。

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服务器是好的:

<?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

问题是什么? 为什么PHP服务器是好的两个nodojs不是,为什么jQuery在任何服务器上都可以?

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:

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:

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.

But when ajax with XMLHttpRequest to php server every thing is Ok.

nodejs server:

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 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?

最满意答案

我不知道原因,但是如果你想修复它,请使用cors包。 由于软件包具有快速请求触发功能,因此请在发送手册之前发送标题。

I don't know the reason but use the cors package if you want to fix it. Because the package has trigger on express request, send header before you send manual.

XMLHttpRequest和jQuery AJAX方法之间的响应头区别(Response header difference between XMLHttpRequest and jQuery AJAX method)

我的问题不重复。

码:

var data = {'userId': window.cookie.get('userId'), 'sessionId': window.cookie.get('sessionId')} $.post(window.DbUrl + '/test', data, function (e) { console.log(e); });

我尝试用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 ...

码:

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);

我尝试与XMLHttpRequest在同一个URL响应是:

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

在nodejs express服务器中,缺少Access-Control-Allow-*标头。

但是,当使用XMLHttpRequest到php服务器的每一件事情都是好的。

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服务器是好的:

<?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

问题是什么? 为什么PHP服务器是好的两个nodojs不是,为什么jQuery在任何服务器上都可以?

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:

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:

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.

But when ajax with XMLHttpRequest to php server every thing is Ok.

nodejs server:

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 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?

最满意答案

我不知道原因,但是如果你想修复它,请使用cors包。 由于软件包具有快速请求触发功能,因此请在发送手册之前发送标题。

I don't know the reason but use the cors package if you want to fix it. Because the package has trigger on express request, send header before you send manual.