我的问题不重复。
码:
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-8In 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'); ?>wellcomeWhat 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.
更多推荐
发布评论