Send post request to nodejs with only options
習慣沉默
習慣沉默 2017-07-03 11:42:02
0
2
856

When sending a post request to the background, there is only one options request, but no real post request. The get request can succeed. And if you use postman, the post request can also be successful. Do I need to configure anything? code show as below:

When sending a post request:


Send get request:

In the postman environment, post can be successful.

The nodejs code is as follows:

var app = require('express')();
var User = require("./users.js");

app.post('/users/login',function (req,res) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.send("foo");
    console.log(res)
})
app.get('/users/login',function (req,res) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.send("bar");
})

app.listen('1090','127.0.0.1');

The front desk uses angular’s ​​$http.
What I want to ask is, why are there only these cross-domain options when posting?

習慣沉默
習慣沉默

reply all(2)
巴扎黑
  • 首先搞清楚为啥会发一个options的请求(如果你已经知道了就忽略好了),以下是发送(Preflight request)的先决条件。

  1. 请求以 GET, HEAD 或者 POST 以外的方法发起请求。或者,使用 POST,但请求数据为 application/x-www-form-urlencoded, multipart/form-data 或者 text/plain 以外的数据类型。比如说,用 POST 发送数据类型为 application/xml 或者 text/xml 的 XML 数据的请求。

  2. 使用自定义请求头(比如添加诸如 X-PINGOTHER)

  • 由于GET请求没有预请求,直接发送所以没问题。你在后端需要处理的options的请求,并且带上CORS需要的那些头,例如Access-Control-Allow-Origin等,这样options的预请求成功之后,才会接着发送真正的post请求!!!

  • 我自己有一个疑问,我看你后端的代码是没有处理options的请求的,但是你前端的状态显示这个请求是成功的!!!想知道这个是怎么弄的?

希望能帮到你

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!