前端发跨域请求,python后台只接收到了option请求,不再接收post请求是什么原因

我的接口如下

clipboard.png
请求结果如下

clipboard.png

clipboard.png
之后就一直这样了,不知道哪里出错了

阅读 5.7k
4 个回答

接口没有配置拦截 post 类型的请求。
比如 node.js 定义接口的时候会指定请求类型:

app.get('/user/:id', function(req, res){
  res.send('user ' + req.params.id);
});

app.post('/', function (req, res) {
  console.log(req.body);
  res.json(req.body);
})

这样如果接口地址一样,请求类型不一样,还是会访问不了,所以需要改后台接口

安装跨域插件没,对应的cors-headers

1.要讲json字符串转化成json。
var data='({"id":1,"pid":2})';//注意格式,有单引号和括号,key是双引号,value无所谓。
var newData=JSON.stringify(data);//得到{id:1,pid:2}
或者直接写成var data={id:1,pid:2};就不用JSON.stringify了
2.ajax请求的时候指定返回的dataType:"json"
如果你在第一步发送前用了JSON.stringify()   
ajax返回的时候,数据要var res=JSON.parse(res)一下。否则不用

前台跨域post请求,由于CORS(cross origin resource share)规范的存在,浏览器会首先发送一次options嗅探,同时header带上origin,判断是否有跨域请求权限,服务器响应access control allow origin的值,供浏览器与origin匹配,如果匹配则正式发送post请求。

设置header access control allow origin等于*,就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题