Angularjs 网页包不接受POST请求
我目前正在开发一个Angular 2 web应用程序,它可以与API进行通信。在应用程序中,用户可以选择支付选项,API将返回支付服务的url 问题在于,支付服务使用POST进入确认页面,该页面因某种原因不被WebPack接受,它只允许GET请求,我们得到以下错误: 无法过帐/选择/付款方式 有人知道我们如何配置允许POST请求的网页吗?我已经联系了付款提供商,但不可能执行GET请求而不是POSTAngularjs 网页包不接受POST请求,angularjs,angular,webpack,webpack-dev-server,Angularjs,Angular,Webpack,Webpack Dev Server,我目前正在开发一个Angular 2 web应用程序,它可以与API进行通信。在应用程序中,用户可以选择支付选项,API将返回支付服务的url 问题在于,支付服务使用POST进入确认页面,该页面因某种原因不被WebPack接受,它只允许GET请求,我们得到以下错误: 无法过帐/选择/付款方式 有人知道我们如何配置允许POST请求的网页吗?我已经联系了付款提供商,但不可能执行GET请求而不是POST 谢谢Webpack dev server仅用作您的前端服务器,例如为您的静态资产提供服务。因此,只
谢谢Webpack dev server仅用作您的前端服务器,例如为您的静态资产提供服务。因此,只支持GET请求 如果您想使用代理服务器或后端服务器,那么应该实现这一点。你可以用这个。
请参阅。Webpack dev服务器仅用作前端服务器,例如,用于服务静态资产。因此,只支持GET请求 如果您想使用代理服务器或后端服务器,那么应该实现这一点。你可以用这个。
请参阅。至少不获取404错误的黑客方法是将请求代理到/selection/payment method,然后返回空响应或任何您想要的内容,我认为res是Express类的一个实例,通过在webpack.config.js中添加以下内容:
文档。至少不出现404错误的一种黑客方法是将请求代理到/selection/payment method,然后返回一个空响应或任何您想要的内容,我认为res是Express类的一个实例,通过在webpack.config.js中添加以下内容:
文档。感谢@robertklep向我发送了代理文档的链接,我们找到了解决方法。我们需要做的不是处理POST请求,而是以某种方式将其转换为GET。在阅读了更多的文档之后,我们看到了webpack dev服务器配置的setup:property 使用setup:property可以获得expressjs对象,并且可以在它到达表示Cannot POST/url/to/page的路由之前捕获url 我们的结局是:
devServer: {
setup: function(app) {
app.post('/selection/payment-method', function(req, res) {
res.redirect('/selection/payment-method');
});
},
}
这样,我们得到了一个GET请求而不是POST,并且我们的应用程序执行了一个API请求来检查支付是否成功
这只用于开发 感谢@robertklep,他给我发送了指向代理文档的链接,我们找到了解决方法。我们需要做的不是处理POST请求,而是以某种方式将其转换为GET。在阅读了更多的文档之后,我们看到了webpack dev服务器配置的setup:property 使用setup:property可以获得expressjs对象,并且可以在它到达表示Cannot POST/url/to/page的路由之前捕获url 我们的结局是:
devServer: {
setup: function(app) {
app.post('/selection/payment-method', function(req, res) {
res.redirect('/selection/payment-method');
});
},
}
这样,我们得到了一个GET请求而不是POST,并且我们的应用程序执行了一个API请求来检查支付是否成功
这只用于开发 根据@Sven的回答,对设置进行修改,使其在POST中始终有效 在webpack.config.js中添加对body parser、sync request和Add require的依赖关系
var bodyParser = require('body-parser');
var request = require('sync-request');
在webpack.config.js的devServer部分
devServer: {
setup: function(app) {
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.post(/^\/(URL1|URL2|URL3)\//, function(req, res) {
var serviceCallResponse = request('POST', 'your app server url here' + req.originalUrl, {
json:req.body
});
res.send(serviceCallResponse.getBody('utf8'));
});
},
proxy: {
'*/other URLs proxy/*': 'your app server url here'
}
}
将URL1/2更改为要代理的URL,然后将应用程序服务器的地址放在其中
这将适用于在json有效负载上工作的各种POST请求代理,根据@Sven的回答,对设置进行修改,使其始终适用于POST 在webpack.config.js中添加对body parser、sync request和Add require的依赖关系
var bodyParser = require('body-parser');
var request = require('sync-request');
在webpack.config.js的devServer部分
devServer: {
setup: function(app) {
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.post(/^\/(URL1|URL2|URL3)\//, function(req, res) {
var serviceCallResponse = request('POST', 'your app server url here' + req.originalUrl, {
json:req.body
});
res.send(serviceCallResponse.getBody('utf8'));
});
},
proxy: {
'*/other URLs proxy/*': 'your app server url here'
}
}
将URL1/2更改为要代理的URL,然后将应用程序服务器的地址放在其中
这将适用于在json有效负载上工作的各种请求后代理您是否正在生产中运行webpack dev server?@robertklep否在我们的生产服务器上未生产我们安装了nginx,它提供静态html、js和css。但是,当我们在开发确认页面时,我们需要一种方法来开发确认页面。您是否在生产环境中运行webpack dev server?@robertklep No不在生产环境中,我们在生产环境中安装了nginx,它提供静态html、js和css。但是,当我们在开发时,我们需要一种开发确认页面的方法。我们的应用程序只提供静态资产,在确认页面,它执行API请求以检查支付是否成功。在生产中,我们使用nginx来提供静态html、js和css,这一切都很顺利。太糟糕了,网页包开发服务器不允许它。无论如何,谢谢你的回答!这不是一个很好的答案。代理的全部用途是在开发期间代理数据服务器。这不行
多好的代理得到,而不是张贴。实际上,大多数时候它都是代理POST,我只看到它在某些情况下失败。代理数据是webpack dev server最基本的功能之一。很抱歉,我不得不否决你的答案。我们的应用程序只提供静态资产,在确认页面,它会执行API请求以检查付款是否成功。在生产中,我们使用nginx来提供静态html、js和css,这一切都很顺利。太糟糕了,网页包开发服务器不允许它。无论如何,谢谢你的回答!这不是一个很好的答案。代理的全部用途是在开发期间代理数据服务器。代理获取而不是发布没有多大好处。实际上,大多数时候它都是代理POST,我只看到它在某些情况下失败。代理数据是webpack dev server最基本的功能之一。很抱歉,我不得不否决你的答案。谢谢你的建议!在检查了您发送的文档中的更多设置后,我们以不同的方式对其进行了黑客攻击。使用代理,无论是GET还是POST请求,请求都会被终止。如果您使用setup:而不是proxy:您将获得express对象,并且可以在它是post或put或其他任何内容时执行操作。我在答案中添加了示例代码。谢谢你的建议!在检查了您发送的文档中的更多设置后,我们以不同的方式对其进行了黑客攻击。使用代理,无论是GET还是POST请求,请求都会被终止。如果您使用setup:而不是proxy:您将获得express对象,并且可以在它是post或put或其他任何内容时执行操作。我在回答中添加了示例代码。您将如何在生产中执行类似的操作?您将如何在生产中执行类似的操作?