@@ -63,6 +63,7 @@ bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR
6363 XCHAR** pptszList;
6464 LPCXSTR lpszMethodPost = _X (" POST" );
6565 LPCXSTR lpszMethodGet = _X (" GET" );
66+ LPCXSTR lpszMethodOPtion = _X (" OPTION" );
6667 XCHAR tszRVBuffer[4096 ];
6768 XCHAR tszSDBuffer[4096 ];
6869 XCHAR tszUrlName[128 ];
@@ -75,6 +76,9 @@ bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR
7576
7677 st_HDRParam.nHttpCode = 200 ; // HTTP CODE码
7778 st_HDRParam.bIsClose = true ; // 收到回复后就关闭
79+
80+ XCHAR tszAPIType[MAX_PATH] = {};
81+ HttpProtocol_ServerHelp_GetUrlApi (pSt_HTTPParam->tszHttpUri , tszAPIType);
7882 // 得到URL参数个数
7983 HttpProtocol_ServerHelp_GetParament (pSt_HTTPParam->tszHttpUri , &pptszList, &nListCount, tszUrlName);
8084 if (nListCount < 1 )
@@ -91,11 +95,12 @@ bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR
9195 LPCXSTR lpszFuncName = _X (" api" );
9296 LPCXSTR lpszFunctionStr = _X (" function" );
9397 LPCXSTR lpszStreamStr = _X (" stream" );
98+ LPCXSTR lpszFunRtc = _X (" rtc" );
9499
95100 memset (tszKey, ' \0 ' , sizeof (tszKey));
96101 memset (tszValue, ' \0 ' , sizeof (tszValue));
97102
98- if (0 != _tcsxnicmp (lpszFuncName, tszUrlName, _tcsxlen (lpszFuncName)))
103+ if (0 != _tcsxnicmp (lpszFuncName, tszUrlName, _tcsxlen (lpszFuncName)) && 0 != _tcsxnicmp (lpszFunRtc, tszAPIType, _tcsxlen (lpszFunRtc)) )
99104 {
100105 ModuleProtocol_Packet_Comm (tszRVBuffer, &nRVLen, NULL , 400 , " Bad Request,parament is incorrent" );
101106 HttpProtocol_Server_SendMsgEx (xhHttpPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
@@ -134,6 +139,22 @@ bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR
134139 PullStream_ClientGet_Handle (lpszClientAddr, &pptszList, nListCount);
135140 }
136141 }
142+ else if (0 == _tcsxnicmp (lpszMethodOPtion, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodOPtion)))
143+ {
144+ nSDLen = _xstprintf (tszSDBuffer, _X (" HTTP/1.1 200 OK\r\n "
145+ " Connection: Close\r\n "
146+ " Access-Control-Allow-Origin: *\r\n "
147+ " Access-Control-Allow-Headers: *\r\n "
148+ " Access-Control-Allow-Methods: *\r\n "
149+ " Access-Control-Expose-Headers: *\r\n "
150+ " Access-Control-Allow-Credentials: false\r\n "
151+ " Access-Control-Request-Private-Network: true\r\n "
152+ " Content-Length: 0\r\n "
153+ " Server: %s\r\n\r\n " ), BaseLib_OperatorVer_XTypeStr ());
154+
155+ XEngine_Network_Send (lpszClientAddr, tszSDBuffer, nSDLen, ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP);
156+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP接口:%s,请求OPTION方法成功" ), lpszClientAddr);
157+ }
137158 else
138159 {
139160 // 可能是RTSP
0 commit comments