2017-12-04 5 views
0

내가 서버에 Ajax 호출을 만들기 위해 노력하고 호출 서버는 내 요청파이어 폭스 확장 기능은

$.ajax({   
      url: abc + '/123/xyz/', 
       cache: false, 
       type: 'GET', 
       crossDomain: true, 
       headers: { 
        "key": "xxxxxxxxxxx" 
       } 
      }).done(function(result) { 
       executeOnSuccess(); 
    }); 

서버의 예상 결과를 확인하는 리퍼러 URL을 필요로해야 이 라인을 실행하면 그럴 수 있습니다 request.getHeader("referer");

나는 null을 얻습니다.

나는 지금 당분간이 일에 매달 렸습니다. 다른 옵션은 수동으로 ajax 헤더에 referer url을 추가하는 것이지만 크롬처럼 작동 할 것으로 기대하고 있었습니까?

아무도 그것에 대해 알고 있습니까?

미리 감사드립니다.

+0

요청을 한 정확한 URL과 프로토콜은 무엇입니까? – str

+0

음 정확한 URL을 제공 할 수는 없지만, 내가 말할 수있는 것은 프로토콜 http와 https 둘 모두로 시도했는데 어떤 경우에도 referer url은 요청 헤더가 없다는 것입니다. –

+0

중요한 고려 사항 : 해당 코드는 어디에서 호출 되었습니까? 콘텐츠 스크립트 또는 그렇지 않으면? – Xan

답변

0

브라우저는 항상 리퍼러를 덮어 씁니다. Ajax 호출의 리퍼러를 변경할 수 없다는 것을 의미합니다. 그러나 시도 할 수 있습니다!

$.ajax({ 
    url: abc + '/123/xyz/', 
    type: "GET", 
    headers: { 
     "Referer": "Change here reference" 
    }, 
    success: function (data) { 
     alert("Success"); 
    }, 
    error: function (data) { 
     console.log(data); 
    } 
}); 

또한, 당신은 AMO의 확장을 제출할 계획하는 경우에, 당신은 항상 서버에 호출에 HTTPS를 사용해야 있습니다.

+0

음, 크롬 브라우저에서 동일한 코드를 실행하면 자동으로 헤더에 리퍼러가 전송됩니다. Firefox에서는 위의 예에서 지적한 것처럼 수동으로 보내야합니다. 그래서 일반적인 파이어 폭스 행동인가 아니면 뭔가 빠져 있습니다. 파이어 폭스와 크롬을 위해 만들어진 확장 기능에서이 아약스 호출이 호출되고 있음을 분명히 밝힙니다. –