|
|
@@ -80,6 +80,32 @@ export const http = (type?: RequestHttpEnum) => {
|
|
|
return get
|
|
|
}
|
|
|
}
|
|
|
+const prefix = 'javascript:'
|
|
|
+// 对输入字符进行转义处理
|
|
|
+export const translateStr = (target: string | object) => {
|
|
|
+ if (typeof target === 'string') {
|
|
|
+ if (target.startsWith(prefix)) {
|
|
|
+ const funcStr = target.split(prefix)[1]
|
|
|
+ let result;
|
|
|
+ try {
|
|
|
+ result = new Function(`${funcStr}`)()
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ window['$message'].error('js内容解析有误!')
|
|
|
+ }
|
|
|
+ return result
|
|
|
+ } else {
|
|
|
+ return target
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (const key in target) {
|
|
|
+ if (Object.prototype.hasOwnProperty.call(target, key)) {
|
|
|
+ const subTarget = (target as any)[key];
|
|
|
+ (target as any)[key] = translateStr(subTarget)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return target
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
* * 自定义请求
|
|
|
@@ -125,15 +151,17 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
|
|
|
}
|
|
|
|
|
|
// 处理头部
|
|
|
- const headers: RequestParamsObjType = {
|
|
|
+ let headers: RequestParamsObjType = {
|
|
|
...globalRequestParams.Header,
|
|
|
...targetRequestParams.Header,
|
|
|
}
|
|
|
+ headers = translateStr(headers)
|
|
|
|
|
|
// data 参数
|
|
|
let data: RequestParamsObjType | FormData | string = {}
|
|
|
// params 参数
|
|
|
- let params: RequestParamsObjType = targetRequestParams.Params
|
|
|
+ let params: RequestParamsObjType = { ...targetRequestParams.Params }
|
|
|
+ params = translateStr(params)
|
|
|
// form 类型处理
|
|
|
let formData: FormData = new FormData()
|
|
|
formData.set('default', 'defaultData')
|
|
|
@@ -145,20 +173,20 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
|
|
|
|
|
|
case RequestBodyEnum.JSON:
|
|
|
headers['Content-Type'] = ContentTypeEnum.JSON
|
|
|
- data = JSON.parse(targetRequestParams.Body['json'])
|
|
|
+ data = translateStr(JSON.parse(targetRequestParams.Body['json']))
|
|
|
// json 赋值给 data
|
|
|
break
|
|
|
|
|
|
case RequestBodyEnum.XML:
|
|
|
headers['Content-Type'] = ContentTypeEnum.XML
|
|
|
// xml 字符串赋值给 data
|
|
|
- data = targetRequestParams.Body['xml']
|
|
|
+ data = translateStr(targetRequestParams.Body['xml'])
|
|
|
break
|
|
|
|
|
|
case RequestBodyEnum.X_WWW_FORM_URLENCODED:
|
|
|
headers['Content-Type'] = ContentTypeEnum.FORM_URLENCODED
|
|
|
const bodyFormData = targetRequestParams.Body['x-www-form-urlencoded']
|
|
|
- for (const i in bodyFormData) formData.set(i, bodyFormData[i])
|
|
|
+ for (const i in bodyFormData) formData.set(i, translateStr(bodyFormData[i]))
|
|
|
// FormData 赋值给 data
|
|
|
data = formData
|
|
|
break
|
|
|
@@ -167,7 +195,7 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
|
|
|
headers['Content-Type'] = ContentTypeEnum.FORM_DATA
|
|
|
const bodyFormUrlencoded = targetRequestParams.Body['form-data']
|
|
|
for (const i in bodyFormUrlencoded) {
|
|
|
- formData.set(i, bodyFormUrlencoded[i])
|
|
|
+ formData.set(i, translateStr(bodyFormUrlencoded[i]))
|
|
|
}
|
|
|
// FormData 赋值给 data
|
|
|
data = formData
|
|
|
@@ -180,11 +208,17 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
|
|
|
data = requestSQLContent
|
|
|
}
|
|
|
|
|
|
- return axiosInstance({
|
|
|
- url: `${requestOriginUrl}${requestUrl}`,
|
|
|
- method: requestHttpType,
|
|
|
- data,
|
|
|
- params,
|
|
|
- headers
|
|
|
- })
|
|
|
+ try {
|
|
|
+ const url = (new Function("return `" + `${requestOriginUrl}${requestUrl}`.trim() + "`"))();
|
|
|
+ return axiosInstance({
|
|
|
+ url,
|
|
|
+ method: requestHttpType,
|
|
|
+ data,
|
|
|
+ params,
|
|
|
+ headers
|
|
|
+ })
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ window['$message'].error('URL地址格式有误!')
|
|
|
+ }
|
|
|
}
|