JavaScript를 사용하여 iFrame의 요소에 액세스해야하는 웹 응용 프로그램에서 작업하고 있습니다. 이를 위해 iFrame은 브라우저에 "Allow-Control-Allow-Origin : *"헤더를 보내야합니다.Firefox setResponseHeader가 작동하지 않습니다.
불행하게도 이것은 내가 응답 헤더를 수정하려면 확장을 사용하고 있는데 그 이유는, 발생하지 않지만, 어떤 이유로, setResponseHeader이 작동하지 않습니다.
그것은 내가 X-프레임-옵션을 제거하는 setResponseHeader을 사용하고,하지만 사용자 정의 헤더를 설정하고있을 때, 그냥 작동하지 않습니다 훨씬 더 복잡하기 때문에 가져옵니다. 내가 요청을 관찰 할 수의 네트워크 탭 "요소 검사"하고 요청 헤더가 올바르게 설정되어 표시하면서, 그것은 응답 헤더를 표시하지 않습니다 파이어 폭스를 사용하고
. 내가 요청 및 응답 헤더를 설정하고있어 방법
.
var chrome = require("chrome");
chrome.Cc["@mozilla.org/observer-service;1"].getService(chrome.Ci.nsIObserverService).addObserver({
observe : function(subject, topic, data) {
var channel = subject.QueryInterface(chrome.Ci.nsIHttpChannel);
channel.setRequestHeader("x-mysite-extended", "somedata", false);
}
},"http-on-modify-request",false);
chrome.Cc["@mozilla.org/observer-service;1"].getService(chrome.Ci.nsIObserverService).addObserver({
observe : function(subject, topic, data) {
var channel = subject.QueryInterface(chrome.Ci.nsIHttpChannel);
channel.setResponseHeader("x-mysite-extended", "somedata", false);
}
},"http-on-examine-response",false);
다시 말해 요청 헤더는 네트워크 탭에 따라 작동합니다. 응답 헤더를 설정하기 위해 http-on-modify-request를 시도했으나 제대로 작동하지 않았습니다. 나는 작동 X-프레임 - 옵션 헤더의 제거 해요 방법
는 그입니다.
let myListener =
{
observe : function (aSubject, aTopic, aData)
{
console.log(aTopic);
if (aTopic == "http-on-examine-response")
{
let channel = aSubject.QueryInterface(Ci.nsIHttpChannel);
try
{ // getResponseHeader will throw if the header isn't set
let hasXFO = channel.getResponseHeader('X-Frame-Options');
if (hasXFO)
{
// Header found, disable it
channel.setResponseHeader('X-Frame-Options', '', false);
}
}
catch (e) {}
}
}
}
var observerService = Cc["@mozilla.org/observer-service;1"]
.getService(Ci.nsIObserverService);
observerService.addObserver(myListener, "http-on-examine-response", false);
저는 지금 2 시간 동안이 문제를 해결하려고 노력해 왔기 때문에 어떤 도움을 주시면 감사하겠습니다. 감사.
내가 setRequestHeader를하려고 아니에요, 나는 실제로 setResponseHeader에 – TheNavigat
을 시도하고 @TheNavigator 내 생각은 같은 것, 그것은 수행 할 수 있습니다 수정 요청시, 이후에 이미 설정되어 있으므로 시도해보십시오. 'setRequestHeader''NS_ERROR_ILLEGAL_VALUE'를 시도 할 때 오류가 발생합니다. 그렇다면 내 추측이 맞다고 생각합니다. – Noitidart
http-on-modify-request에서 responseHeader를 설정할 때 그 오류가 발생합니다. 뭔가 이상한 것이 있습니다. 다른 코드 스 니펫을 시도했지만 제대로 작동했지만 네트워크 탭에 수정 된 헤더가 표시되지 않습니다. 그러나 그것은 효과적이다. 그것은 매우 이상합니다. – TheNavigat