我的前端代码:
<form action="" onSubmit={this.search}>
<input type="search" ref={(input) => { this.searchInput = input; }}/>
<button type="submit">搜索</button>
</form>
// search method:
const baseUrl = 'http://localhost:8000/'; // where the Express server runs
search(e) {
e.preventDefault();
let keyword = this.searchInput.value;
if (keyword !== this.state.lastKeyword) {
this.setState({
lastKeyword: keyword
});
fetch(`${baseUrl}search`, {
method: 'POST',
// mode: 'no-cors',
headers: new Headers({
'Content-Type': 'application/json'
}),
// credentials: 'include',
body: JSON.stringify({keyword})
})
}
}
和我的Express.js服务器代码:
app.all('*', (req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
// res.header('Access-Control-Allow-Credentials', true);
res.header('Content-Type', 'application/json; charset=utf-8')
next();
});
如您所见,Express服务器在端口8000上运行,React开发服务器在端口3000上运行。localhost:3000
正在请求localhost:8000/search
,并且localhost:8000
正在通过使用POST方法请求另一个源。但是,只有第二个请求工作得很好。我不知道怎么会这样。当然,如果我用querystring发出GET请求,事情就正常了。但我也想知道如何用请求正文进行POST获取。
该options
请求由浏览器自行自动发送,然后再从代码中尝试post
请求。这叫做CORS预飞行。
https://developer.mozilla.org/en-美国/docs/web/http/cors#preflighted_requests有详细信息。
在本例中,它的要点是代码添加的content-type:application/json
请求头触发浏览器执行预飞行options
请求。
npm install cors
var express = require('express')
, cors = require('cors')
, app = express();
const corsOptions = {
origin: true,
credentials: true
}
app.options('*', cors(corsOptions)); // preflight OPTIONS; put before other routes
app.listen(80, function(){
console.log('CORS-enabled web server listening on port 80');
});
它将处理options
请求,同时还会发回正确的头和值。
浏览器端,怎么发一个 http2 的请求?
我正在创建自己的API(使用express)和react.js应用程序。但是,当我从react应用程序发送数据时,服务器不会检索数据。这是我的密码: 发布请求客户端: 服务器端POST请求检索: 你知道我怎么解决这个问题吗?
请求方式: "|3|2|url,content|\r" 参数: url 设置Post请求的url链接 content post请求的数据 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: sof
我有一个API,让用户使用一些凭证登录,我正在开发另一个API,用来注册程序的日志。 基本上我想在我的方法上调用另一个api。 这是我现在拥有的代码,但我总是收到500个空错误: 这是我的控制器上的登录方法: 当用户尝试对自己进行身份验证时,此方法 this.redirectLogs 应将消息发送到我的日志 API,并从中创建日志。 这是方法: 日志 URL 是该方法在我的 loggerAPI 上
问题内容: 我有一个返回promise的方法,并且在内部该方法调用一个API,该API每分钟只能有20个请求。问题是我有很多对象(大约300个),并且我想为每个对象调用API。 目前,我有以下代码: 但是它不处理时序约束。我希望我可以使用_.chunk和_.debounce之类的东西,但是我无法解决这个问题。有人可以帮我吗? 问题答案: 您可以每分钟发送1个包含20个请求的块,或者每3秒将其间隔1
我已经构建了一个API(API.example.com),希望它可以从www.example.com访问。com 我还希望它可以从其他域访问 为此,我添加了访问-控制-允许-起源:* 但是当我打开www.example.com时,在所有api请求之前发送了一个预飞行请求(OPTIONS请求) 如何停止多个预飞行请求?我想应该只有一个起飞前的要求,我做错了什么!!!?或者浏览器在每次通话前都要发送飞