Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 角度httpclient CORS请求返回404错误_Node.js_Angular_Typescript_Cors - Fatal编程技术网

Node.js 角度httpclient CORS请求返回404错误

Node.js 角度httpclient CORS请求返回404错误,node.js,angular,typescript,cors,Node.js,Angular,Typescript,Cors,我启动了一个运行在127.0.0.1:4200(PC a)上的示例Angle应用程序,在同一台计算机上启动了一个web浏览器,一切正常 在应用程序中,有一个heroService.ts调用this.http.get等从127.0.0.1:4200获取数据 然后我使用nodejs express启动了另一个http服务器,它提供了一些API服务,IP是192.168.2.101:3000(PC B)。api非常好,因为我可以在任何web浏览器中运行它并查看结果(都是json)。在nodejs ex

我启动了一个运行在127.0.0.1:4200(PC a)上的示例Angle应用程序,在同一台计算机上启动了一个web浏览器,一切正常

在应用程序中,有一个heroService.ts调用this.http.get等从127.0.0.1:4200获取数据

然后我使用nodejs express启动了另一个http服务器,它提供了一些API服务,IP是192.168.2.101:3000(PC B)。api非常好,因为我可以在任何web浏览器中运行它并查看结果(都是json)。在nodejs express中,我也安装了cors,并使用app.use(cors())启用cors支持

以下是问题所在

我在PCA中遵循heroService.ts,创建了apiService.ts,并使用
this.http.get(“http://192.168.2.101:3000订阅(=>console.log(“确定”)
在PC B上调用API(PC B应已启用cors)

然而,在浏览器上运行的Angular似乎无法识别这个地址,在浏览器的调试窗口中,我可以看到404错误,无法找到。请注意,相同的url直接在web浏览器中工作得非常好

奇怪的是,在浏览器的(chrome和edge)网络调试窗口中,我看不到有任何请求发出,也没有这样的请求发送到服务器。在nodejs的服务器端,我试图记录任何连接,但我也看不到任何连接。在我看来,web浏览器没有发送这个http get,angular库直接返回404

我试图搜索相同的错误,但找不到任何有用的东西

我猜Angular的库将继续使用基本url(127.0.0.1:4200),而不会解析?有办法解决吗

我希望我能把问题解释清楚


谢谢你的帮助。

我想你犯了类似的错误

CORS策略已阻止从源站“”访问“”处的XMLHttpRequest:对飞行前请求的响应未通过访问控制检查:“访问控制允许源站”标头包含无效值“”

因此,您应该启用跨源资源共享(也称为CORS)。要做到这一点,我们需要在响应中设置正确的标题,这允许浏览器使用来自任何域的数据

要使用Angular等框架将数据从服务器端(后端)加载到客户端代码(前端),可以在定义路由之前使用express(Node.js)中的中间件功能

app.use(函数(请求、恢复、下一步){
res.header(“访问控制允许原点”、“*”);
res.header(“访问控制允许头”、“来源、X请求、内容类型、接受”);
next();
});

下面的链接将有助于获得有关“enable CORS express.js(node.js)”的更多信息。

它确实找到了服务器,否则您将无法从该服务器获得404响应。404表示浏览器找到了服务器,但服务器无法获取浏览器请求的资源。因此,请检查服务器上发生了什么。@JBNizet您好,谢谢。然而,我使用浏览器来测试链接,它工作得非常好,我也可以在浏览器网络响应中看到“访问控制允许原点:”。奇怪的是,如果我使用Angular的this.http.get来获取这个链接,在浏览器的(chrome和edge)网络调试窗口中,我看不到有任何请求发出,也没有这样的请求发送到服务器。在nodejs的服务器端,我试图记录任何连接,但我也看不到任何连接。在我看来,这是因为web浏览器没有发送此http get out,但angular库直接返回404。@user534498您可能需要为此使用代理配置,这可能会帮助您解决问题。如果选项请求失败,您可能看不到cors错误的网络请求,如果是这样,则不会发送后续GET请求,这在客户端访问另一台主机上的服务(发出CORS请求)时是正常的。为了确定服务器/客户端是否是问题所在,我建议使用邮递员打电话,看看是否会出现相同的错误。即使您的cors设置正确,也可能是您的路线配置