gpt4 book ai didi

Java JSOUP 如何在 header 中发送 Origin

转载 作者:可可西里 更新时间:2023-11-01 17:05:07 26 4
gpt4 key购买 nike

我正在尝试使用 JSOUP 测试我的服务,但我使用的是 CORS,我需要发送起源仅用于测试海豚,但当我发送这个时,我不会在服务器端收到,总是收到空值。

Connection con = Jsoup.connect("http://localhost:8080/myservice");
con.userAgent("Mozilla");
/* the origin is replaced to null automatically*/
con.header("Origin", origin);
con.ignoreHttpErrors(true);
con.followRedirects(true);
con.ignoreContentType(true);
con.post();

我会做一些不同的事情吗?

已解决:

使用 ApacheHTTP 代替 JSOUP,导致 JSOUP 默认删除 Origin header 。:)

最佳答案

在幕后,JSoup 使用 java.net.HttpURLConnection 建立连接。 HttpURLConnection 有一组受限制的 header ,包括“Origin”。这些似乎没有很好的记录,但可以在 source 中清楚地看到.

正如您提到的那样,使用 HttpClient 可以解决这个问题。

或者,要继续从 JSoup 直接连接,取决于您的环境中发生的其他情况,可以选择设置 sun.net.http.allowRestrictedHeaders 系统属性。这可以在上面链接的源代码中进一步看到。

这将绕过 HttpURLConnection 中的 header 检查,但令人讨厌的是,它被编码为共享静态值。这意味着在 JVM 中的任何地方建立第一个连接之前需要设置系统属性 - 例如作为 -D 命令行选项。

关于这个话题还有更多over here .

稍微有点题外话,HttpURLConnection 源代码中的注释,将那里的受限 header 与 XMLHttpRequest2 进行比较很有趣 - 就好像这是期望在浏览器中运行一样。这种限制可能要追溯到 Java 小程序时代?它现在对服务器端应用程序的帮助可能不大。

关于Java JSOUP 如何在 header 中发送 Origin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49307267/

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