获取http://localhost:3000/api/fetch?search=12312321 404(Not Found)Reactjs和node js中的cors问题我在Reactjs中使用了代理方法,但无法消除,请帮助我
代理
“代理”:“http://localhost:5000/”
两者都试过
“代理”:“http://localhost:5000”
快速
registerRoute.route('/fetch/:id').get((req,res)=>{
console.log("called by someone ",req.params.id);
res.send(“OKEY WILL”);
});
将调用后端API的REACTJS函数
FetchNotification(){
axios({
'method':'GET',
'url':'api/fetch',
'headers': {
'content-type':'application/octet-stream',
'x-rapidapi-host':'example.com',
'x-rapidapi-key': process.env.RAPIDAPI_KEY
}
,
'params': {
'id':'12312321'
},
})
}
当我简单地调用Axios.Get it Perfect work时,但当我给它提供参数时,它会给出错误xhr:178 404 not found
也返回相同结果的简单服务器
常量express=require(“express”);
const cors=require('cors');
常量app=express();
var bodyParser=require('body-parser');
app.use(BodyParser.URlenCoded({extended:false}));
//解析应用程序/JSON
app.use(bodyParser.json());
app.use('*',cors());
app.get('/fetch/:id',(req,res)=>{
console.log(“calling”,req.params.id);
});app.listen(5000);
我觉得有很多问题。我会试着一个一个地解决他们的问题。
首先,如果您正确地代理了请求(我认为您是按照package.json进行代理的),那么您就不需要cors包了。这样你就可以处理掉那个包裹了。
阅读更多关于为什么不应该让所有传入请求绕过CORS检查的内容->对于公共只读WebService启用CORS是否安全?
其次,您在前端指定的url是'url':'api/fetch'
,这意味着浏览器将调用http://localhost:3000/api/fetch?search=12312321
,正如您在404的错误语句中看到的那样,它正确地执行了该操作。
在package.json中将代理指定为“proxy”:“http://localhost:5000”
意味着您现在正在向http://localhost:5000
而不是http://localhost:3000
发出请求,但浏览器仍然认为它的http://localhost:3000
。这就是代理的全部目的,也就是你如何愚弄浏览器在不抛出任何错误的情况下执行CORS。
但是,由于在服务器上,您正在监听app.get('/fetch/:id',(req,res)
而不是app.get('api/fetch/:id',(req,res)
,因此它与此URL不匹配,因为您也没有在某个单独的路由器模块中显式处理以/api
开头的请求。
因此,您应该将axios调用中的url更新为url':'/fetch
,而package.json中的代理值分别为“proxy”:“http://localhost:5000”
或url':'fetch
和“proxy”:“http://localhost:5000/”
。注意我是如何使用/
的
或
您可以将express端的URL更新为app.get('api/fetch/:id',(req,res)
最后,每当您收到一个请求时,您需要返回一些值(字符串或JSON甚至状态代码)作为结果。在您的示例中,您只是console.log(“calling”,req.params.id);
,没有向UI发回任何响应。
因此,即使您的404可以在修复URL后解决问题,您也会遇到请求超时错误(408),因为您的UI将一直等待来自服务器的响应,而您没有发送任何响应。
所以你应该做这样的事情:
app.get('api/fetch/:id',(req , res) => {
console.log("calling",req.params.id);
res.send("It worked");
});
注意返回响应的方式->https://expressjs.com/en/starter/hello-world.html如果您不想返回响应,那么您可以简单地返回200、504等状态。
我可以看到您使用Nodejs作为服务器端。因此,您可以尝试更改下面的行
app.use('*',cors());
至
app.use(cors());
如果这不能解决问题,你可以尝试为CORS添加一个google chrome扩展(最有可能)。这样,您就不需要为运行服务器设置任何代理。
另外,您需要在URL中做一个小的更改,而不是调用
'url':'api/fetch'
您需要在调用中提供一个id,因为后端api正在接受一个参数
'url':'api/fetch/some_id'
我的网址不同。 错误: CORS策略阻止从https://url.example.com/b/478Lhttp://localhost:3000访问XMLHttpRequest:对预试请求的响应不通过权限改造检查:请求的资源上不存在访问控制允许起源标头。
所以我已经实现了一个Spring引导JAVA应用程序作为服务器和角作为前端。所以实际上,当我在本地运行这些时,一切都很好。 但是当我为两者构建Docker映像并尝试将它们作为容器进行测试时,我面临着CORS错误。 由于我使用JWT令牌作为安全性,我已经禁用了crsf和默认的Spring Security令牌。所以在这里您可以看到CORS的JAVA配置; 这就是nginx。形态 即使我尝试在同一网络
问题内容: 我知道这个问题已经问过几次了。 但是,我无法获得这些解决方案。 我正在运行标准安装的node.js和socket.io。(来自Amazon EC2上的yum) 问题是Chrome退回到xhr轮询,并且这些请求需要有效的CORS配置。但是,我似乎无法正常工作。我的Web服务器在端口80上运行,而node.js(socket.io)在端口81上运行。如您所见,我试图使socket.io使用
我正在尝试在PHP服务器上允许CORS我有以下代码 和一个使用jquery获取它的简单ajax请求 我在我的开发工具上不断得到这个CORS错误 HTTP/1.1 200 OK日期:Mon,31 Aug 2015 17:25:33 GMT Content-Type:Text/HTML Content-Length:97 连接:Keep-alive Keep-alive:Timeout=30 服务器:
我已经有以下CORS问题好几天了,我不打算解决它。localhost:4200上的Angular应用程序不允许我访问上传照片的路径。 我的后台在拉勒维尔 我可以登录、注册和执行其他帖子请求,但不能这样。 这是我的应用程序的图像。 这是我注册为全球中间件的CORS中间件] 网络选项卡中的响应标头 1
所以我有以下中间件: 但是javascript假设cors没有启用?