Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javajsoup如何在头中发送源代码_Java_Http_Cors_Jsoup - Fatal编程技术网

javajsoup如何在头中发送源代码

javajsoup如何在头中发送源代码,java,http,cors,jsoup,Java,Http,Cors,Jsoup,我试图使用JSOUP测试我的服务,但我使用的是CORS,我需要发送 来源仅用于测试端口,但当我在服务器端发送此消息时,我不会接收,始终接收null Connection con = Jsoup.connect("http://localhost:8080/myservice"); con.userAgent("Mozilla"); /* the origin is replaced to null automatically*/ con.header("Origin", origin);

我试图使用JSOUP测试我的服务,但我使用的是CORS,我需要发送 来源仅用于测试端口,但当我在服务器端发送此消息时,我不会接收,始终接收null

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默认情况下会删除源标头。

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

正如您所提到的,使用HttpClient将回避这个问题

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

这将绕过HttpURLConnection中的头检查,但令人烦恼的是,它被编码为共享静态值。这意味着在JVM中的任何位置进行第一次连接之前,需要设置系统属性,例如作为a-D命令行选项

关于这个话题还有很多


稍微离题一点,HttpURLConnection源代码中的注释比较了那里的受限头和XMLHttpRequest2,这很有趣——好像这是在浏览器中运行的。这个限制可以追溯到Java小程序的时代?现在,它对服务器端应用程序的帮助可能不大。

origin是实际变量吗?是的,对不起。字符串原点=;试试addHeader吧?没有此方法addHeader,只有headerString,String来放置标头,另一个标头有效,只有Origin不起作用。可能是Origin标头要有协议,请改为尝试?