博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node.js express jquery ajax post options 跨域问题 解决办法
阅读量:7058 次
发布时间:2019-06-28

本文共 800 字,大约阅读时间需要 2 分钟。

就不啰嗦了,直接给正确答案。

一 服务器端 也就是 node.js & express

最简单的就是使用
安装 npm install cors --save
引入 var cors = require('cors');
使用 app.use(cors());
这就搞定了服务器端。

二 客户端 也就是 js & jQuery

首先不能用快捷方法 $.post() 了,得用 $.ajax()

$.ajax({    type: 'POST',    url: '...',    data: JSON.stringify(params),    processData: false,    contentType: 'application/json',    dataType: 'json'}).then(function(ret){    alert(ret);});

除了 {type: 'POST', url: '...', dataType: 'json'} 这几个参数没有变化之外,

不同之处在于:
data 得先用 JSON.stringify() 手动转换成 json 字符串,
processData 指定为 false 告诉 jQuery 不要再对 data 进行处理,
contentType 指定为 application/json 告诉服务器,我发送的数据是 json 格式。

我自己解决这问题的时候,搜索到的答案都少指定了 processData

于是服务器收到的数据变成这样子:{ '{id:123, name:"asd"}' }
可能是 jQuery 不同版本之间的差别吧,
反正手动指定一下 processData: false 就不会错。

但为什么服务器端收到的会是一个 OPTIONS 和一个 POST 请求?

图片
大概是浏览器安全机制方面的问题吧……

转载地址:http://qmgol.baihongyu.com/

你可能感兴趣的文章
人人都是 DBA(XV)锁信息收集脚本汇编
查看>>
将不确定变为确定~MVC3的ValidateInput属性失灵了
查看>>
[LeetCode] Paint House II 粉刷房子之二
查看>>
[LeetCode] Number Complement 补数
查看>>
设计一个有getMin功能的栈
查看>>
[LintCode] Maximum Gap 求最大间距
查看>>
RegeX的早期版本
查看>>
Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合...
查看>>
零元学Expression Blend 4 - Chapter 23 Deep Zoom Composer与Deep Zoom功能
查看>>
C#~异步编程再续~async异步方法与同步方法的并行
查看>>
Windows下的字体美化
查看>>
13.9. Health Status
查看>>
Unable to execute dex: Multiple dex files define Lcom/kenai/jbosh/AbstractAttr
查看>>
微信小程序明星开发者博卡君专访
查看>>
什么是 Help Desk?
查看>>
【MySQL】Tokudb安装测试初探
查看>>
12C打补丁的简单尝试
查看>>
分割excel sheet
查看>>
CentOS 7 yum方式快速安装MongoDB
查看>>
C#身份证识别相关技术
查看>>