# 使用HTTP/HTTPS协议的方式访问在线服务
#### 背景说明
HTTP的核心模式是请求-响应，即客户端发起请求，服务器返回响应，服务器无法主动推送数据。HTTPS在HTTP的基础上增强了安全性，广泛应用于对数据隐私和完整性要求较高的场景。
HTTP协议以明文方式发送内容，不提供任何方式的数据加密，如果攻击者截取了Web浏览器和网站服务器之间的传输报文，就可以直接读懂其中的信息，因此，HTTP协议不适合传输一些敏感信息。HTTPS经由HTTP进行通信，但利用SSL/TLS来加密数据包。HTTPS开发的主要目的，是提供对网站服务器的身份认证，保护交换数据的隐私与完整性。
HTTP/HTTPS 协议特点：
- 无状态性：默认不保留会话状态，每次请求独立处理。可通过Cookie、Session或Token扩展实现有状态会话管理（如用户登录态）。
- 灵活性与可扩展性：支持文本（JSON/XML）或二进制（图片、文件）等多种数据格式传输。通过Header字段扩展功能（如缓存控制、内容协商、跨域访问CORS）。
- 广泛兼容性：所有常用浏览器、编程语言和框架均原生支持，无需依赖特定库或协议升级。适用于Web页面、RESTful API、文件传输等通用场景。
 
#### 前提条件
- [配置服务信息](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0016.html#ZH-CN_TOPIC_0000002555517990__section14135916115214)时，在网络配置中服务协议需选择"HTTP"或"HTTPS"。
- 在线服务中选择的镜像需支持HTTP/HTTPS协议。
 
#### 约束与限制
调用API访问在线服务时，对预测请求体大小和预测时间有限制：
- 请求体的大小不超过服务运行配置中的请求大小限制，超过后请求会被拦截。
- 平台每次请求预测的时间不超过服务运行配置中的请求超时时间（发生数据传输时将重新计算超时时间）。
 
 #### 获取认证信息、预测文件的本地路径、在线服务的调用地址
- **认证信息**
  HTTP/HTTPS协议本身不提供额外的认证方式，和HTTP请求方式一致。
  根据服务部署时选择的认证方式获取认证信息。无认证方式无需获取认证信息。
  - [Token认证](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0007.html#ZH-CN_TOPIC_0000002543191169__section185861327115517)
  
  - [API KEY认证](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0008.html#ZH-CN_TOPIC_0000002511711226__zh-cn_topic_0165025308_section134041911727)
  
  - [无认证](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0006.html)
  
  
  本章节以Token认证为例，用户Token的获取请参见[获取Token认证](https://support.huaweicloud.com/api-modelarts/modelarts_03_0004.html#section0)。获取Token认证时，由于ModelArts生成的在线服务API不支持domain范围的token，因此需获取使用范围为project的Token信息，即scope参数的取值为project。
  

- **预测文件的本地路径**
  预测文件的本地路径既可使用绝对路径（如Windows格式"D:/test.png"，Linux格式"/opt/data/test.png"），也可以使用相对路径（如"./test.png"）。
  
- **在线服务的调用地址**
  在线服务的调用地址和输入参数信息，可以在控制台的"模型推理 \> 在线推理"，单击指定在线服务，在"服务"页签的"调用信息"获取。
  "调用URL"即在线服务的调用地址。当模型配置文件中apis定义了路径，调用地址后需拼接自定义路径。如："{在线服务的调用地址}/v1/chat/completions"。
  
  
 
#### HTTP/HTTPS调用在线服务
HTTP服务调用步骤如下（以图形界面的软件Postman进行预测，token认证为例）：
1. 下载Postman软件并安装，您也可以直接在Chrome浏览器添加Postman扩展程序（也可使用其他支持发送post请求的软件）。Postman推荐使用8.11.1版本。
2. 打开Postman，选择POST任务，将[获取认证信息、预测文件的本地路径、在线服务的调用地址]中已获取的在线服务调用地址复制到POST后面的方框。
   在header中添加认证信息，不同认证方式有不同header，跟https的推理服务相同。以Token认证为例：Headers页签的Key值填写为"X-Auth-Token"，Value值为用户Token。
   图1使用Postman进行预测   
   ![](https://support.huaweicloud.com/inference-modelarts/figure/zh-cn_image_0000002511551330.png) 
3. 单击"send"发送请求，结果会在"Response"下的对话框里显示。
 
#### 请求调用的Headers信息说明
HTTP的Headers字段是指在超文本传输协议（HTTP）的请求和响应消息中的消息Headers部分。HTTP的Headers字段可以根据需要自定义，推理网关默认会转发请求Headers，但是以下请求Headers具有系统语义，用于模型推理预测转发场景。**请避免使用以下请求Headers** ，如[表1]所示。因为请求调用过程中会涉及校验，若开启网关鉴权则对应的Headers信息字段会被重写。
 表1避免使用的Headers信息 
| Headers字段        | 功能说明                                                                                                                                       |
|:---|:---|
| X-Forwarded-For  | 请求经过ELB转发时，ELB会重写X-Forwarded-For字段，将客户端真实IP写入该头部，使系统在多层代理链路中仍能准确获取客户端源IP，从而保障IP Hash会话亲和、IP黑白名单等依赖真实IP的功能正常生效。                            |
| X-Real-IP       | 请求经过ELB转发时，ELB会重写X-Real-IP字段，将客户端的真实源IP地址写入该头部，使系统在多层代理链路中仍能准确获取客户端的实际IP地址，从而在X-Forwarded-For等常规代理头部不可用或值为unknown时作为兜底手段识别客户端来源并记录至日志用于问题排查。 |
| X-Forwarded-Host | 请求经过ELB转发时，ELB会重写X-Forwarded-Host字段，将原始访问域名写入该头部，使系统在多层代理链路中仍能准确获取请求来源的Host地址，从而识别请求来源类型（内网/公网/控制台）并执行对应的访问控制策略，同时记录至链路追踪日志用于问题排查。          |
   
