Je suis l'auteur d' Intab , une extension Chrome qui vous permet de voir un lien en ligne par opposition à un nouvel onglet. Il n'y a pas beaucoup de choses de fantaisie dans les coulisses, c'est juste un iframe qui charge l'URL sur laquelle l'utilisateur a cliqué.
Cela fonctionne bien, sauf pour les sites qui définissent l'en-tête X-Frame-Options pour DENY ou SAMEORIGIN. Certains sites vraiment grands comme Google et Facebook l'utilisent tous deux, ce qui permet une expérience légèrement janky.
Y a-t-il un moyen de contourner cela? Puisque j'utilise une extension Chrome, existe-t-il des problèmes de niveau de navigateur auxquels je peux accéder? Vous cherchez des idées ou de l'aide!
Chrome offre l'API webRequest
pour intercepter et modifier les requêtes HTTP. Vous pouvez supprimer l'en X-Frame-Options
tête X-Frame-Options
pour permettre l'insertion de pages dans un iframe.
chrome.webRequest.onHeadersReceived.addListener( function(info) { var headers = info.responseHeaders; for (var i=headers.length-1; i>=0; --i) { var header = headers[i].name.toLowerCase(); if (header == 'x-frame-options' || header == 'frame-options') { headers.splice(i, 1); // Remove header } } return {responseHeaders: headers}; }, { urls: [ '*://*/*' ], // Pattern to match all http(s) pages types: [ 'sub_frame' ] }, ['blocking', 'responseHeaders'] );
Dans le manifeste, vous devez spécifier les autorisations webRequest
et webRequestBlocking
, plus les modèles d'URL que vous souhaitez intercepter.