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

标签 javascript java http-post jxbrowser

在我的一个项目中,我在运行 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/

相关文章:

javascript - 函数对象是否必要

java - 用于迭代 session 变量的 strut 标签

java - 开始运行jar文件时如何设置-Xmx?

android - 发布 Json 对象数据以在 android 中使用 volley 获取 Json 数组响应

jquery - 将对象从 javascript 发送到 MVC 中的操作方法

javascript - 计算类的实例 - 使用 Firebug 将 jQuery 注入(inject)第三方网站?

javascript - 如何将 AngularJS UI 组件库移植到最新的 Angular?

java - 如何使用继承处理 JPA CollectionTable?

objective-c - 在 HTTP Post 中实现超时

javascript - 从 javascript 加载和缓存脚本