pagemixed

/usr/local/m2/setting.json 다음 영역에 대해 기술한다.

{
  "functions": {
    "contents": {
      "pagemixed": {
        ...
      }
    }
  }
}

How to use

명령어 리스트

mxt

# main
# 페이지 전체영역의 Mixed Contents 문제를 해결한다.
https://example.com/view.html/pagemixed/mxt/main

# main::id - id 영역지정
# 페이지내 id 영역만 대상으로 Mixed Contents 문제를 해결한다.
https://example.com/view.html/pagemixed/mxt/main::id

# main:.class - class 영역지정
# 페이지내 class 영역만 대상으로 Mixed Contents 문제를 해결한다.
https://example.com/view.html/pagemixed/mxt/main:.class

# main:tag - tag 영역지정
# 페이지내 tag 영역만 대상으로 Mixed Contents 문제를 해결한다.
https://example.com/view.html/pagemixed/mxt/main:tag

# main!:id    - id 영역추출
# main!.class  - class 영역추출
# main!tag    - tag 영역추출
# 지정된 영역만 추출하여 처리한다.
https://example.com/view.html/pagemixed/mxt/main::id

명령어

파라미터

동작

mxt

main

rebound

resource

페이지 내의 Mixed Contents 문제를 해결한다.

페이지로부터 파생된 요청의 Mixed Contents 문제를 해결한다.

페이지가 참조하는 리소스를 Proxying한다.

에러 메시지

See also

응답코드

x-sc-chain-error 필드

설명

원본응답

not200

원본에서 200 OK 를 응답받지 못함

510

invalidmethod

/mxt/query 요청시 POST 메소드 아님

510

invalidcmd

알 수 없는 명령어

510

faildom

DOM 생성 및 처리 실패

510

failencrypt

경로 암호화 처리 실패

510

faildecrypt

경로 복호화 처리 실패

510

unknown

정의되지 않은 오류

meta

"meta" : {
  "enable" : false,
  "keyword": "pagemixed"
}
enable (기본: false)

pagemixed 활성화

keyword (기본: pagemixed)

pagemixed 키워드

Note

pagemixed 엔진은 pagedesk 엔진과 같이 사용되는 경우가 많다. 이런 경우 @ 예약어를 통해 명령어를 위임하면 하나의 엔진처럼 사용이 가능하다.

# functions.contents.pagemixed.meta

"meta" : {
  "enable" : true,
  "keyword": "@pagedesk"
}

위와 같이 keywordpagedesk 로 위임하면 다음과 같이 하나의 명령체계 사용이 가능하다.

https://example.com/view.html/pagedesk/edit/true/mxt/main

traffics

{
  "functions": {
    "contents": {
      "pagemixed": {
        "traffics": {
          ...
        }
      }
    }
  }
}

rebound

"rebound" : {
  "domain" : null
}
domain

리바운드 트래픽을 위임할 도메인

tags

"tags" : {
    "domain" : "bar.com",
    "targets" : [
      "script.src",
      "link.href"
    ]
}
domain (기본: null)

targets 에 선언된 태그.속성에 대해서만 리바운드 트래픽을 위임할 도메인

targets

리바운드 트래픽을 분리 위임할 태그.속성

resource

"resource" : {
  "domain" : null
}
domain

리소스 트래픽을 위임할 도메인

upgradeHttps

{
  "functions": {
    "contents": {
      "pagemixed": {
        "upgradeHttps": {
          ...
        }
      }
    }
  }
}

ip

"ip": {
  "enable": true
}
enable (기본: true)

IP주소 기반의 URL SSL Onloading 여부

# as-is
<img src="http://182.162.143.217/cob/20FW/20FW_main2_kid780.jpg">
<img src="http://182.162.143.217:8080/cob/20FW/20FW_main2_kid781.jpg">


# to-be
<img src="https://example.com/.../pagemixed/mxt/resource/http://182.162.143.217/cob/20FW/20FW_main2_kid780.jpg">
<img src="https://example.com/.../pagemixed/mxt/resource/http://182.162.143.217:8080/cob/20FW/20FW_main2_kid781.jpg">">

retain

"retain": {
  "enable": true,
  "list": []
}
enable (기본: true)

선언된 도메인의 URL은 처리하지 않고 유지한다.

list

처리하지 않을 도메인 목록

# as-is
<img src="http://foo.com/logo.jpg">


# to-be
# "list": [ "foo.com" ] 으로 설정되어 있다면 가공하지 않는다.
<img src="http://foo.com/logo.jpg">

black

"black": {
  "enable": true,
  "list": []
}
enable (기본: true)

list에 있다면 무조건 프로토콜 무관하게 SSL Onloading 한다.

list

도메인 목록

# as-is
<img src="https://foo.com/logo.jpg">

# to-be
# "list" : [] 인 경우라면 수정하지 않는다.
<img src="https://foo.com/logo.jpg">

# to-be
# "list" : ["foo.com"] 인 경우라면 SSL onloading 시킨다.
<img src="https://example.com/.../pagemixed/mxt/resource/https://foo.com/logo.jpg">

white

"white": {
  "enable": true,
  "list": []
}
enable (기본: true)

list에 있다면 HTTPS를 지원할 것으로 기대하고 프로토콜만 수정하지 않는다.

list

도메인 목록

# as-is
<img src="http://foo.com/logo.jpg">

# to-be
# "list" : [] 인 경우라면 SSL onloading 시킨다.
<img src="https://example.com/.../pagemixed/mxt/resource/https://foo.com/logo.jpg">

# to-be
# "list" : ["foo.com"] 인 경우라면 foo.com이 https를 지원한다고 간주하여 프로토콜만 변경한다.
<img src="https://foo.com/logo.jpg">

svldb

"svldb": {
  "enable": true,
  "url": "https://svl.m2live.co.kr"
}
enable (기본: true)

SVL 서비스 활성화

url

SVL 서비스와 통신할 URL을 설정한다. M2에서 외부 통신이 불가능할 경우 Proxy주소를 통해 통신이 가능하다.

../../../../_images/prditem021.png
# as-is
# 엔진은 SVL-DB를 참고하여 다음 태그를 수정한다.
<img src="https://foo.com/1.jpg">
<img src="http://foo.com/2.jpg">
<img src="https://bar.com/3.jpg">
<img src="http://bar.com/4.jpg">


# to-be
# 위 태그는 순서대로 다음과 같이 수정된다.
<img src="https://foo.com/1.jpg">   // not modified
<img src="https://foo.com/2.jpg">   // upgrade
<img src="https://example.com/.../pagemixed/mxt/resource/http://bar.com/3.jpg">  // proxying + downgrade
<img src="https://example.com/.../pagemixed/mxt/resource/http://bar.com/4.jpg">  // proxying

protocols

URL 형태에 따라 svldb 검사여부를 설정한다.

"protocols": {
  "http": true,
  "https": true,
  "implicit": false
}
http (기본: true)

http:// 프로토콜로 명시된 URL을 대상으로 처리한다.

https (기본: true)

https:// 프로토콜로 명시된 URL을 대상으로 처리한다.

implicit (기본: true)

// 와 같이 암묵적으로 선언된 프로토콜로 명시된 URL을 대상으로 처리한다.

report

"report": {
  "enable": true,
  "schedule": "0 0 * * * *"
}
enable (기본: true)

상품기술서 내 불확실한 도메인 목록을 SVL 서비스로 보고한다.

schedule (기본: 0 0 * * * *)

보고 주기

update

"update": {
  "enable": true,
  "schedule": "0 0 * * * *"
}
enable (기본: true)

SVL-DB 업데이트 활성화

schedule (기본: 0 0 * * * *)

업데이트 주기

syntax

"syntax": {
  "enable": true,
  "proxying": "http"
}
enable (기본: true)

URL 형식 SSL Onloading 활성화

proxying (기본: http)

  • http http:// 로 시작되는 URL만 SSL Onloading한다.

  • all 프로토콜에 관계없이 모두 SSL Onloading한다.

targetTags

"targetTags": [
  "img.src",
  "img.data-src",
  "input.src",
  "video.src",
  "video.poster",
  "source.src",
  "iframe.src",
  "link.href",
  "script.src",
  "a.href",
  "embed.src"
]
targetTags

upgradeHttps 기능을 동작시킬 태그.속성 목록

options

{
  "functions": {
    "contents": {
      "pagemixed": {
        "options": {
          ...
        }
      }
    }
  }
}

anchor

"anchor" : {
  "enable": false,
  "mixed": false
}
enable (기본: false)

true 인 경우에만 <a href> 속성을 처리한다.

mixed (기본: false)

true 인 경우에만 SSL/TLS Onloading 정책에 따라 https 로 업그레이드만 진행하며 proxying하지 않는다.

video

"video": {
  "enable": false
}

enable (기본: false)

  • false - <video> 태그를 처리하지 않는다.

  • true - 가능하다면 URL을 https 로 업그레이드한다.

embed

"embed": {
  "enable": false
}

enable (기본: false)

  • false - <embed> 태그를 처리하지 않는다.

  • true - 가능하다면 URL을 https 로 업그레이드한다.

schemeless

"schemeless": {
  "enable": false,
  "originProtocol" : "http"
}

enable (기본: false)

  • false - 수정하지 않는다.

  • true - 상품기술서의 다른 리소스와 동일하게 처리한다. scheme을 명확히 지정한다.

    # AS-IS
    <script src="//foo.com/common.js">
    
    # TO-BE
    <script src="https://foo.com/common.js">
    
originProtocol (기본: http)

SSL onloading을 해야하는 경우 원본 프로토콜을 명시적으로 선택한다.

<script src="//foo.com/common.js">
  • http - http 프로토콜을 사용한다.

    <script src=".../pagemixed/mxt/resource/http://foo.com/common.js">
    
  • https - https 프로토콜을 사용한다.

    <script src=".../pagemixed/mxt/resource/https://foo.com/common.js">
    

encryptSrcUrl

"encryptSrcUrl" : {
  "enable" : false,
  "algorithm" : "aes-128-cbc",
  "key" : "0123456789abcdef",
  "iv" : null
}
enable (기본: false)

SSL Onloading되는 원본URL 암호화

algorithm

알고리즘

key

iv

이니셜 벡터

image

datasrc

"datasrc" : {
  "enable" : false
}
enable (기본: false)

true 인 경우 <img data-src> 를 리소스 처리대상으로 지정한다.

datauri

"datauri" : {
  "enable" : false
}
enable (기본: false)

true 인 경우 <img src="data:image/gif;base64,R0lGODlhPQBEAPe ..." 를 리소스 처리대상으로 지정한다.