㈠ java的servlet 不通过request能获取到服务器IP与提供的端口号吗。
这个可不是的,request相当于客户端,浏览器端的请求,是通过request的构造方法进行表单的提交,然后再分装到实体对象中,再调用业务层济宁处理数据,然后后面再进行操作了
㈡ 如何用Request对象获得机器的环境参数
下图表是ServerVariables 集合比较常用的一些参数: ALL_HTTP客户端发送的所有 HTTP 标题文件。CONTENT_LENGTH客户端发出内容的长度。 CONTENT_TYPE内容的数据类型。如:"text/html"。同附加信息 的查询一起使用,如 HTTP 查询 GET、POST 和 PUT。LOCAL_ADDR返回接受请求的服务器地址。如果在绑定多 个 IP 地址的多宿主机器上查找请求所使用的地址 时,这条变量非常重要。LOGON_USER用户登录 Windows NT 的帐号QUERY_STRING查询HTTP 请求中问号(?)后的信息。REMOTE_ADDR发出请求的远程主机 (client) 的 IP 地址。 REMOTE_HOST发出请求的主机 (client) 名称。如果服务器无此 信息,它将设置为空的 MOTE_ADDR 变量。REQUEST_METHOD该方法用于提出请求。相当于用于 HTTP 的 GET、HEAD、POST等 等。SERVER_NAME出现在自引用 URL 中的服务器主机名、DNS 化名 或 IP 地址。SERVER_PORT发送请求的端口号。HTTP_ACCEPT_LANGUAGE机器使用的语言环境ServerVariables集合对象的语法是什么? 此集合对象在程序中的具体语法如下: Request.ServerVariables ( 服务器环境变量 ) <HTML><HEAD><TITLE>取得客户端的环境参数</TITLE></HEAD><BODY><%Dim Language '用以储存Client端环境用的语言Response.Write "本地IP地址:" & Request.ServerVariables ( "LOCAL_ADDR" )Response.Write "<HR>"Response.Write "服务器IP地址:" & Request.ServerVariables ( "REMOTE_ADDR" )Language = Request.ServerVariables ( "HTTP_ACCEPT_LANGUAGE" )Response.Write " <HR> "Select Case Language Case "zh-tw" : Response.Write "您使用的是繁体中文" Case "zh-cn" : Response.Write "您使用的是简体中文"End Select%><HR></BODY></HTML>
㈢ 为什么用request.getRemoteAddr获得的全是127.0.0.1
获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。
于是可得出获得客户端真实IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
获得客户端真实IP地址的方法二:
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。如:
X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用户真实IP为: 192.168.1.110
㈣ java request 如何取到发送请求的地址是什么
request对象通过以下方法来获取请求路径,如下所示:
String getServerName():获取服务器名,localhost;
String getServerPort():获取服务器端口号,8080;
String getContextPath():获取项目名,/Example;
String getServletPath():获取Servlet路径,/AServlet;
String getQueryString():获取参数部分,即问号后面的部分:username=zhangsan
String getRequestURI():获取请求URI,等于项目名+Servlet路径:/Example/AServlet
String getRequestURL():获取请求URL,等于不包含参数的整个请求路径:http://localhost:8080/Example/AServlet 。
㈤ request.getRemoteAddr();拿到的是服务器的ip,还是我发送方主机的ip
我不太清楚你用的啥语言,但是你想,HTTP协议是属于应用层协议,是在最上层的,你拿到的HTTP的内容,IP层的地址应该已经被剥离掉了,你从request里面是不可能拿到对端的IP的。你自己看看HTTP的头,它就没有这个东西啊
㈥ 微信小程序的request 中url 一定要用域名吗 不能用HTTPS的服务器IP地址吗
首先根据微信小程序的要求,需要使用域名!必须使用HTTPS协议加密,并且符合以下ATS标准:
一、证书(要求):安全的证书公钥算法(RSA 2048 位以上或 ECC 256 位以上)、安全的证书签名算法(SHA2)、证书被 Apple ATS 信任(权威机构颁发)、证书与域名匹配(包含被检测的域名)、证书时间有效(未过期)。
二、服务器(要求):开启 HTTPS、服务器配置符合 ATS 规范、支持 TLS1.2、PFS(完全正向保密)、iOS 密码套件支持。
三、您要知道的是使用可信机构机构Gworg SSL证书,成本考虑的情况下通常使用DV证书,然而他仅支持域名,然而IP是不可能的,就算是可信机构签发了IP证书信任,但信任率也不会全面,而且公网IP也会变动,当然IP在那边意味着服务器也暴漏在眼前,IP签发的成本不菲!
㈦ SIP 消息中的Request-URL 域名与网络地址有什么区别
一般request-uri中会发送给域名或者一个地址,一般发给域名的时候都会配置代理服务器,其实你就把目标想成有域名也有一个地址就好了
㈧ <%=Request ("LOCAL_ADDR")%>是提取服务器IP地址,如何提取客户机的IP呢
取得客户机的IP:
<%=request.servervariables("remote_host")%>
㈨ Request.ServerVariables
Request.ServerVariables["Url"]
返回服务器地址
Request.ServerVariables["Path_Info"]
客户端提供的路径信息
Request.ServerVariables["Appl_Physical_Path"]
与应用程序元数据库路径相应的物理路径
Request.ServerVariables["Path_Translated"]
通过由虚拟至物理的映射后得到的路径
Request.ServerVariables["Script_Name"]
执行脚本的名称
Request.ServerVariables["Query_String"]
查询字符串内容
Request.ServerVariables["Http_Referer"]
请求的字符串内容
Request.ServerVariables["Server_Port"]
接受请求的服务器端口号
Request.ServerVariables["Remote_Addr"]
发出请求的远程主机的IP地址
Request.ServerVariables["Remote_Host"]
发出请求的远程主机名称
Request.ServerVariables["Local_Addr"]
返回接受请求的服务器地址
Request.ServerVariables["Http_Host"]
返回服务器地址
Request.ServerVariables["Server_Name"]
服务器的主机名、DNS地址或IP地址
Request.ServerVariables["Request_Method"]
提出请求的方法比如GET、HEAD、POST等等
Request.ServerVariables["Server_Port_Secure"]
如果接受请求的服务器端口为安全端口时,则为1,否则为0
Request.ServerVariables["Server_Protocol"]
服务器使用的协议的名称和版本
Request.ServerVariables["Server_Software"]
应答请求并运行网关的服务器软件的名称和版本
Request.ServerVariables["All_Http"]
客户端发送的所有HTTP标头,前缀HTTP_
Request.ServerVariables["All_Raw"]
客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_
Request.ServerVariables["Appl_MD_Path"]
应用程序的元数据库路径
Request.ServerVariables["Content_Length"]
客户端发出内容的长度
Request.ServerVariables["Https"]
如果请求穿过安全通道(SSL),则返回ON如果请求来自非安全通道,则返回OFF
Request.ServerVariables["Instance_ID"]
IIS实例的ID号
Request.ServerVariables["Instance_Meta_Path"]
响应请求的IIS实例的元数据库路径
Request.ServerVariables["Http_Accept_Encoding"]
返回内容如:gzip,deflate
Request.ServerVariables["Http_Accept_Language"]
返回内容如:en-us
Request.ServerVariables["Http_Connection"]
返回内容:Keep-Alive
Request.ServerVariables["Http_Cookie"]
返回内容:Cookie的值
Request.ServerVariables["Http_User_Agent"]
返回内容:Mozilla/4.0[compatible;MSIE6.0;WindowsNT5.1;SV1]
Request.ServerVariables["Https_Keysize"]
安全套接字层连接关键字的位数,如128
Request.ServerVariables["Https_Secretkeysize"]
服务器验证私人关键字的位数如1024
Request.ServerVariables["Https_Server_Issuer"]
服务器证书的发行者字段
Request.ServerVariables["Https_Server_Subject"]
服务器证书的主题字段
Request.ServerVariables["Auth_Password"]
当使用基本验证模式时,客户在密码对话框中输入的密码
Request.ServerVariables["Auth_Type"]
是用户访问受保护的脚本时,服务器用于检验用户的验证方法
Request.ServerVariables["Auth_User"]
代证的用户名
Request.ServerVariables["Cert_Cookie"]
唯一的客户证书ID号
Request.ServerVariables["Cert_Flag"]
客户证书标志,如有客户端证书,则bit0为0如果客户端证书验证无效,bit1被设置为1
Request.ServerVariables["Cert_Issuer"]
用户证书中的发行者字段
Request.ServerVariables["Cert_Keysize"]
安全套接字层连接关键字的位数,如128
Request.ServerVariables["Cert_Secretkeysize"]
服务器验证私人关键字的位数如1024
Request.ServerVariables["Cert_Serialnumber"]
客户证书的序列号字段
Request.ServerVariables["Cert_Server_Issuer"]
服务器证书的发行者字段
Request.ServerVariables["Cert_Server_Subject"]
服务器证书的主题字段
Request.ServerVariables["Cert_Subject"]
客户端证书的主题字段
Request.ServerVariables["Content_Type"]
客户发送的form内容或HTTPPUT的数据类型
㈩ wx.request的接口应该放在服务器的哪个目录
1)网络请求与域名的合法性
微信小程序包括四种类型的网络请求:
普通HTTPS请求(wx.request)
上传文件(wx.uploadFile)
下载文件(wx.downloadFile)
WebSocket通信(wx.connectSocket)
关于“URL 域名不合法,请在后台配置后重试”的错误
小程序只允许与合法配置的域名进行数据交互
进入微信公共平台=>设置=>开发设置:设置需要交互的域名
2)对于接口调用http和https的问题
对于这一个问题,在之前来说,微信公共平台支持使用http测试项目,但是正式发布需要使用https的域名,
但是前几天看到了微信公众平台发的一则公告:
应该是要封杀http方式调用了,公告链接:为保证数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用(时间2017年9月21日)
3)关于method以及data数据
微信小程序多地方都严格区分大小写,所以要注意method的value需要为大写,request的默认的超时时间都是60s;
对于data数据,上次我们从接口中拿到的数据是json格式的,最终发送给服务器的数据是String类型,如果传入的 data 不是 String 类型,会被转换成 String 。
文档中提供的转换规则如下:
对于header['content-type']为application/json的数据,会对数据进行 JSON 序列化
对于header['content-type']为application/x-www-form-urlencoded的数据,会将数据转换成 query string;
(encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)
这个工作在我们设置header头为application/x-www-form-urlencoded后,在后面为我们进行。
4)关于GET和POST请求
根据HTTP的规范,get是用与信息获取,post表示可能修改服务器的资源的请求
对于post请求:'application/json'用在get请求中没有问题,但是用在POST请求中不好使了,content-type 默认为 'application/json';
所以使用post请求时,将content-type设置为application/x-www-form-urlencoded