我正在尝试对REST端点执行POST请求,但在Java代码下执行时失败。返回的响应状态为403禁止。
我使用的是apache HttpClient,下面是我使用的代码:
var postRequest = new HttpPost(myUrl);
postRequest.addHeader(HttpHeaders.CONTENT_TYPE, TEXT_PLAIN_VALUE);
postRequest.addHeader("x-env", environment);
postRequest.addHeader("apikey", myApiKey);
标题设置正确,有完全相同的值在 Postman 。从我看到的类似职位没有“用户代理”标题可能会导致这一点。设置没有解决我的问题,我的想法用完了。事实上,我手动设置所有的标题从 Postman ,仍然没有运气。
当从Java执行GET到相同的URL上下文时,它可以工作。一些JS客户端也可以使用相同的HTTP头访问完全相同的端点。下面是JS代码:
const cnf = {
headers: {
'x-env': 'dev',
apikey: this.myApyKey,
'Content-Type': 'text/plain',
},
};
const data = myRequestBody;
try {
const res = await axios.post(this.apiPath, data, cnf as AxiosRequestConfig);
....
提前感谢您的意见。
3条答案
按热度按时间8dtrkrch1#
尝试检查您的代码是否允许CORS请求?因为在POSTMAN中,即使后端不允许CORS请求,它仍然执行API。但任何编程语言都不是这样。
5lhxktic2#
我试图发布的URL在AWS中配置很差。我没有注意到URL端点以“/”结束,但在我的Java代码中,我试图访问没有正斜杠的相同URL。
将53号公路配置为Map带和不带正斜杠的两条路径修复了这个问题。将此作为答案发布,以便其他人在得到相同结果时可以查看。
oprakyz73#
在我的例子中,我浏览了Postman自动应用的头文件,并将它们与我添加的头文件进行了比较,在Postman中,我点击了头文件,以查找需要哪些头文件才能获得200个响应,并发现它需要头文件“接受”:“/”-我将其添加到我的请求头文件中,它工作了。