gpt4 book ai didi

javascript - JxBrowser 在自定义 ProtocolHandler 中获取帖子正文

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:07 25 4
gpt4 key购买 nike

在我的一个项目中,我在运行 ReactApp 的 Netbeans 应用程序中使用 JxBrowser。我想从 ReactApp 发送一个 post 请求,并在 JxBrowser 中的自定义协议(protocol)处理程序中拦截它。该请求是通过“superagent”完成的:

request
.post('http://my-url')
.send({test: 'it'})
.set('Accept', 'application/json')
.set('Content-Type', 'application/json')
.end(callback)

我在 ProtocolHandler 中收到请求,但我不知道如何从请求中获取帖子正文。

urlRequest.getUploadData() //<-- returns null

在此处获取帖子正文的正确方法是什么?

最佳答案

您正在发出跨域请求。在这种情况下会发送预检“OPTIONS”请求,您需要在 ProtocolHandler 中正确处理它。在这种特殊情况下,您应该设置某些 header ,告诉浏览器允许请求的功能:

if (request.getMethod().equals("OPTIONS")) {
URLResponse urlResponse = new URLResponse();
String origin = request.getRequestHeaders().getHeader("Origin");
HttpHeadersEx headers = urlResponse.getHeaders();
headers.setHeader("Access-Control-Allow-Methods", "POST");
headers.setHeader("Access-Control-Allow-Headers", "Content-Type");
headers.setHeader("Access-Control-Allow-Origin", origin);
urlResponse.setStatus(HttpStatus.OK);
return urlResponse;
}

此外,为了让 JxBrowser 能够正确检测 POST 数据类型,您应该为“Content-Type”请求头设置相应的值。在本例中,它应该是“application/x-www-form-urlencoded”。

request
.post('http://my-url')
.send({test: 'it'})
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded')
.end(callback)

然后您将收到包含您的数据的 POST 请求。我建议您查看以下文章,其中包含与 CORS 相关的详细信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

如果您向同源发出请求,只需设置正确的“Content-Type” header 即可避免处理跨源请求。

关于javascript - JxBrowser 在自定义 ProtocolHandler 中获取帖子正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45230663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com