搜尋
問答 javascript - 向nodejs發送post請求,只有options
javascript - 向nodejs發送post請求,只有options
習慣沉默 2017-07-03 11:42:02 查看 1146

0

向後台發送post請求時,只有一個options的請求,而沒有真的post請求,get請求可以成功。而如果用postman,post請求也可以請求成功。需要配置什麼嗎。程式碼如下:

發送post請求時:


發送get請求:

#而在postman的環境下,post可以成功。

#nodejs程式碼如下:

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');

前台用的是angular的$http。
想問的是,為什麼post的時候,只有這個跨域的options啊

Your Answer
提交

2 個答案
0
  • 首先搞清楚為啥會發一個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的請求的,但是你前端的狀態顯示這個請求是成功的! ! !想知道這個是怎麼弄的?

希望能幫到你

2017-07-03 11:44:02

提交

0

https://github.com/wxungang/n...

完整程式碼

2017-07-03 11:44:02

提交

Hot Tools

vc9-vc14(32+64位元)運行庫合集(連結在下方)

vc9-vc14(32+64位元)運行庫合集(連結在下方)

phpStudy安裝所需運行函式庫集合下載

VC9 32位

VC9 32位

VC9 32位元 phpstudy整合安裝環境運行庫

php程式設計師工具箱完整版

php程式設計師工具箱完整版

程式設計師工具箱 v1.0 php整合環境

VC11 32位

VC11 32位

VC11 32位元 phpstudy整合安裝環境運行庫

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用