dtwr2012 2018-03-22 13:28
浏览 187
已采纳

XMLHttpRequest和jQuery AJAX方法之间的响应头差异

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?

展开全部

  • 写回答

1条回答 默认 最新

  • du4629 2018-03-22 14:56
    关注

    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 Linux误删文件,请求帮助
  • ¥15 IBMP550小型机使用串口登录操作系统
  • ¥15 关于#python#的问题:现已知七自由度机器人的DH参数,利用DH参数求解机器人的逆运动学解目前使用的PSO算法
  • ¥15 发那科机器人与设备通讯配置
  • ¥15 Linux环境下openssl报错
  • ¥15 我在使用VS编译并执行之后,但是exe程序会报“无法定位程序输入点_kmpc_end_masked于动态链接库exe上“,请问这个问题有什么解决办法吗
  • ¥15 el-select光标位置问题
  • ¥15 单片机 TC277 PWM
  • ¥15 在更新角色衣服索引后,Sprite 并未正确显示更新的效果该如何去解决orz(标签-c#)
  • ¥15 VAE代码如何画混淆矩阵
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部