禁止使用URLConnection 403连接到java中的站点(用户代理无法修复)
我在localhost上使用一个wamp服务器,有一个小型Java软件,它应该每周向我的网站发出一次用PHP编写的请求,以发送每周邮件。但是请求抛出一个IOException,表示返回了403。例外情况如下:禁止使用URLConnection 403连接到java中的站点(用户代理无法修复),java,wamp,Java,Wamp,我在localhost上使用一个wamp服务器,有一个小型Java软件,它应该每周向我的网站发出一次用PHP编写的请求,以发送每周邮件。但是请求抛出一个IOException,表示返回了403。例外情况如下: Sending first mail at 11-8-2014 8:00. Sending mail. java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost/mailUn
Sending first mail at 11-8-2014 8:00.
Sending mail.
java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost/mailUnmanaged
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URLConnection.getContent(Unknown Source)
at com.zetup.resurs.weeklyMail.SendWeeklyMail$Task.run(SendWeeklyMail.java:89)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
通过谷歌搜索,我发现在请求中设置用户代理可以解决这个问题。这对我来说并不重要
以下是我发送请求的部分:
URL url;
try {
url = new URL("http://localhost/mailUnmanaged");
} catch (MalformedURLException e) {
e.printStackTrace();
return;
}
try {
System.out.println("Sending mail.");
URLConnection conn = url.openConnection();
conn.setRequestProperty( "User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)" );
conn.setRequestProperty("Host", url.getHost()); // I've tried without this
conn.connect();
System.out.println(conn.getContent().toString());
lastTime.add(Calendar.WEEK_OF_YEAR, 1);
} catch (IOException e) {
e.printStackTrace();
}
如果我复制url并将其粘贴到我的浏览器中,它就可以正常工作
编辑:
我有一个相当广泛的访问权限,可能会引起问题
编辑:更多测试
所以,我检查了Chrome发送的所有头文件,并在代码中设置了所有头文件,它仍然返回403。这开始变得奇怪了。好的,我发现了问题。当我使用Windows 8时,用于连接到我的站点的IP是::1 127.0.0.1的IPv6版本。在我的httpd.conf中,我只允许来自IP::1的请求。我必须将127.0.0.1添加到允许的IP:s。我的新httpd.conf有:
<Directory "c:/wamp/www/">
Options Indexes FollowSymLinks
AllowOverride all
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
Allow from ::1
Allow from 127.0.0.1
</Directory>
如果你用浏览器访问URL,它会工作吗?如果你用google.com替换localhost,输出是什么?@mtkFileNotFoundException@SiXOS,我相信你已经试过了。如果没有,请重试此。。新网址https://www.google.com;. 如果您这样做了,请忽略,似乎还有其他问题您需要提供用户名和密码,并且您的浏览器可能已经为您缓存了这些用户名和密码?