Java - 使用套接字的请求提供403响应

时间:2018-03-26 15:15:47

标签: java sockets

以下代码给出403错误。但我的请求适用于localhost:8080,但不适用于代码中提到的url。标题中的url和文件夹是完全正确的,但我不明白问题在哪里

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;
import java.net.URLEncoder;

public class Main 
{
    public static void main(String[] args)
    {
        try
        {
            String data = URLEncoder.encode("name","UTF-8")+"="+URLEncoder.encode("parsa1234","UTF-8");
            Socket s = new Socket("ramsari.com",80);
            BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream(),"UTF-8"));
            writer.write("POST /help/index.php HTTP/1.0\r\n");
            writer.write("content-length:"+data.length()+"\r\n");
            writer.write("Content-Type:application/x-www-form-urlencoded\r\n");
            writer.write("\r\n");
            writer.write(data);
            writer.flush();
            String c = "";
            while((c = reader.readLine()) != null)
            {
                System.out.println(c);
            }
            writer.close();
            reader.close();


        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }
}

这是我在ramsari.com/help/index.php上的代码

<?php
if(isset($_POST['name']))
{
    echo $_POST['name'];
}
else
{
    echo "error";
}

以下是来自网址

的回复
HTTP/1.1 403 Forbidden
Server: nginx/1.12.1 (Ubuntu)
Date: Mon, 26 Mar 2018 15:08:38 GMT
Content-Type: text/html
Content-Length: 162
Connection: close

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

403 Forbidden状态表示您尚未提供服务器所需的某些凭据。也就是说,您尝试访问的服务器希望您自己标识,提供您的身份证明,然后拥有URL标识的资源的权限。

答案 1 :(得分:1)

您要连接的HTTP系统希望您证明您是该站点的有效用户。

由于您的代码未执行适当的身份验证,并且HTTP服务器配置为仅响应您要求的资源,因此Web服务器已决定使用&#34; 403 Forbidden&#34;这是未经身份验证的用户尝试访问需要身份验证的资源时发送的常见响应代码。

现在,您很可能也没有使用您认为正在使用的同一个Web服务器,因为您提到响应在一个端口上工作,但在另一个端口上不起作用。更改端口可能会影响身份验证的需求,甚至可能影响Web服务&#34;处理请求(这也意味着可能不同的身份验证要求)。

我查看了Web服务器配置,可能会在输出中调试调试,并可能重写客户端以执行(if)所需的身份验证。