2017-02-23 5 views
0

나는 그 페이지 내의 직원 이름과 필드 이름으로 구성된 간단한 Chrome 확장 프로그램을 작성하여 집중을 시작했습니다. 예 : idfieldNameChrome 확장 프로그램 중단 HTTPS

사용자가 해당 필드를 클릭하면 ajax가 사용자 ID를 로컬 웹 서버로 전송하는 데 사용됩니다.

$('[name=' + fieldName + ']').focus(function() { 
    console.log ("FOCUS - " + id + ' ' + fieldName) 
    $.ajax({ url : 'https://LOCAL_IP_ADDRESS/staff.php?staffID=' + id }); 
}); 

확장

LOCAL_IP_ADDRESS는 사용자의 PC는 도달 할 수있는 우리의 로컬 웹 서버의 내부 IP 주소이며, 어떤 호스팅 웹 페이지에서 실행할 수 있습니다.

사이트에서 가져온 데이터가 페이지에서 전송되지 않고 확장 구성의 값만 전송됩니다.

위의 동작이 정상입니다. 그러나 ...

HTTPS 사이트를로드하고 Chrome에서 안전한 것으로 신고합니다.

관련 필드를 클릭하면 staffID가 로컬 웹 서버로 전송됩니다. 그러나 웹 사이트는 이제 안전하지 않은 것으로보고합니다.

내가 그 일을 막기 위해 할 수있는 일이 있습니까?

$('[name=' + fieldName + ']').focus(() => chrome.runtime.sendMessage({id})); 
  • : 이벤트 페이지에 메시지 ID를 보내 콘텐츠 스크립트에서

    "background": { 
        "scripts": ["jquery.js", "eventPage.js"], 
        "persistent": false 
    }, 
    
  • :

    감사

  • 답변

    1
    1. event page 선언 이벤트 페이지는 Ajax 요청 :

      chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { 
          $.ajax({url : 'https://LOCAL_IP_ADDRESS/staff.php?staffID=' + msg.id}); 
      }); 
      

    선택적으로, 당신은 비동기 적으로 콘텐츠 스크립트에 다시 AJAX 요청의 결과를 보낼 수 있습니다

    • 콘텐츠 스크립트

      $('[name=' + fieldName + ']').focus(() => { 
          chrome.runtime.sendMessage({id}, status => console.log(status)) 
      }); 
      
    • 이벤트 페이지 :

      chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { 
          $.ajax({ 
           url : 'https://LOCAL_IP_ADDRESS/staff.php?staffID=' + msg.id, 
           complete: xhr => sendResponse(xhr.status), 
          }); 
          return true; // leave the channel open for sendResponse 
      }); 
      
    +0

    감사합니다. 가능한 한 빨리 시험해 보겠습니다. – Rocket

    +0

    고마워, 이것을 설정하려고합니다. 나는'focusout' 할 때 두 번째 아약스를 실행 할 수 있습니까? – Rocket

    +1

    물론 : 콘텐츠 스크립트에서 전체 URL을 간단히 요리하여 메시지로 보냅니다. – wOxxOm

    관련 문제