从浏览器发送两个请求,但只调用 localhost

Posted

技术标签:

【中文标题】从浏览器发送两个请求,但只调用 localhost【英文标题】:Two request being sent from browser but only localhost is called 【发布时间】:2019-01-02 10:58:45 【问题描述】:

我有一个节点 js API。

app.post('/myapi', function (req, res) 
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, X-Request-With");
    res.header("Content-Type", "application/json");
    res.header("Accept", "application/json");
    * do something *
    res.json( api : "api called successfully" );
);

我在公共文件夹中放置了一个 html 代码。我正在使用 express 来运行 html 代码和后端 API。 我的 html 代码请求获取为,

var headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json, text/plain, */*');

var options = 
  method: 'POST',
  body: JSON.stringify(loginDetails),
  headers: headers,
  mode: 'no-cors'
;
fetch('http://localhost:3001/myapi', options)
.then(function (response) 
  console.log(response);
  res=response.statusCode;
  // return response
  if (res==0) 
    window.location.assign("http://localhost:3001/home.html");
  

);

当我在浏览器中运行代码时。当我单击调用上述前端代码的按钮时。它发送两个请求。两次通话都失败了。一个是 localhost 请求,它是文档调用,另一个是 API 调用。但是 API 调用没有响应。

我在 UI 中收到 / 调用的响应,

cannot POST/

所以我尝试添加以下代码,

app.post('/', function (req, res) 
    res.json( "status": "successfull" );
);

现在也有两个调用,但 UI 返回 status :successful(/ 的输出)。但它没有返回 /myapi 的输出。

有人可以帮忙吗?

我正在获取 localhost 文档的无限启动器。请参阅屏幕截图。

【问题讨论】:

您好,您有错误信息要分享吗? 嗨,我没有收到错误消息。但是对 /myapi 的调用被取消,但浏览器正在加载“localhost:port/”响应。两者同源。 使用您的代码我无法重现该问题。我能够收到请求。您还有其他详细信息吗? 【参考方案1】:

将任何唯一参数附加到请求以避免发送请求的缓存版本。

/api/name?id=<unique_param>

您可以在here 和here 找到更多详细信息。

【讨论】:

这个问题似乎不是缓存请求。考虑到响应cannot POST/,看起来请求要么没有通过,要么没有被节点接受

以上是关于从浏览器发送两个请求,但只调用 localhost的主要内容,如果未能解决你的问题,请参考以下文章

如何从两个不同的路由/网址收集数据,然后在最后使用收集的数据向服务器发送请求?

如何从localhost:5000发送http post请求到localhost:3000

浏览器未在后续请求中发送 cookie

无法从浏览器向快递服务器发送 json [重复]

尝试从 localhost 向 localhost:8000 发送数据时,ajax 调用不起作用

如何使用soapUI模拟webservice客户端发送请求