NodeJS asp.net mvc应用负载的节点代理为空

pvabu6sv  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(114)

我试图创建一个Node代理,它从Web应用程序接收请求,并将它们沿着发送到一个旧的asp.net mvc应用程序,用c# 4.6编写。
我使用的是npm包http-proxy。我对它很了解,也很清楚它在做什么。我可以看到即将发送的请求,如果应用程序收到请求,我可以调试C#应用程序。
如果我的请求以content-type = text的形式通过,那么mvc应用程序会接收到请求,但是在action中,payload为null。即在输入视图模型中没有可用的有效载荷中发送的值。
如果我的请求是content-type = application/json(这是asp.net mvc app front end发送的),那么mvc action break point永远不会命中,请求挂起。
我可以在开发工具中看到原始前端正在发送什么,我可以在节点应用程序中控制台登录它将要发送的内容。当我在node中查看请求时,只有大量的信息,在开发工具中显示的似乎只是请求头和有效负载。我比较了两者之间的差异,有一些小的区别(主机,起源,裁判,也许还有其他一些小东西,我会在下面贴出标题)。
最后,我可以成功地 curl 端点,并从mvc收到一条成功消息,如curl -H "Content-Type: application/json" -X POST -d '{"userName":"asdf", "password":"asdf"}' http://mydomain/login/login
下面是mvc前端请求的头文件

Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 252
Content-Type: application/json; charset=UTF-8
Host: example.net
Origin: http://example.net
Referer: http://example.net/
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
X-Requested-With: XMLHttpRequest

这是我的新前端

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 15
Content-Type: text/plain;charset=UTF-8
Host: localhost:3002
Origin: http://localhost:3001
Referer: http://localhost:3001/
sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

这些是我的代理提交给mvc应用程序的

{
  accept: '*/*',
  'accept-encoding': 'gzip, deflate, br',
  'accept-language': 'en-US,en;q=0.9'
  connection: 'keep-alive',
  'content-length': '15',
  'content-type': 'text/plain;charset=UTF-8',
  host: 'localhost:3002',
  origin: 'http://localhost:3001',
  referer: 'http://localhost:3001/',
    'sec-ch-ua-mobile': '?0',
  'sec-ch-ua-platform': '"Linux"',
  'sec-ch-ua': '"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"',
  'sec-fetch-dest': 'empty',
  'sec-fetch-mode': 'cors',
  'sec-fetch-site': 'same-site',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36',
}

当我在请求上放置一个“data”的侦听器时,我确实看到了有效负载。很明显,还有很多人在要求,我只是不知道什么是相关的,什么是不相关的。我会说URL是相同的:)。

myss37ts

myss37ts1#

所以我在回答我自己的问题,实际上是有人在irc上用geirha帮助我的。
我在中间件中有koa-bodyparser(出于某种原因),虽然我不知道为什么,当我将其与设置content-type=“application/json”结合使用时,请求只是挂在asp.net mvc服务器上。因此,没有bodyparser,使用content-type,它确实可以工作。
我发誓你尝试了所有这些排列,以为你已经试过了,总有一个溜走了,最终是你需要的。

相关问题