Node.js向PHP服务器发送POST请求时为何触发Preflight/OPTIONS请求?
问题
我通过Node.js服务器使用Axios向另一台PHP服务器发送POST请求,请求的Content-Type为application/json,请问这种场景下Node.js服务器是否会向PHP服务器发起Preflight/OPTIONS请求?
请求代码如下:
var axios = require('axios'); var data = {"disco_name":disco, "amount": 1000, "meter_number": 2737373, "MeterType": PREPAID } var config = { method: 'post', maxBodyLength: Infinity, url: 'https://datastationapi.com/api/billpayment/', headers: { 'Authorization': 'Token 3cd8882f7e5e92', 'Content-Type': 'application/json' }, data : data }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
解答
不会发起Preflight/OPTIONS请求。
原因很明确:Preflight请求是浏览器CORS机制独有的行为,仅在浏览器环境下针对跨域AJAX请求触发。而你是在Node.js服务器端用Axios发起HTTP请求,属于服务器之间的通信,不受浏览器的CORS策略约束,Axios会直接发送你配置的POST请求,不会额外发送OPTIONS预请求。
补充说明:如果你的PHP服务器本身配置了OPTIONS请求的处理逻辑(比如为了支持浏览器端的跨域请求),那是PHP服务器的独立设置,但Node.js发起请求时不会主动触发这个步骤。
内容的提问来源于stack exchange,提问作者Rareclint
相关产品推荐
相关产品推荐

