J'ai authentifié automatiquement les utilisateurs visitant notre wiki interne via un lien avec un jeton dans l'URL comme ceci:
href="https://user:pass@Host/"
Dans Chrome 59, cela est empêché.
[Obsolète] Les demandes de sous-source dont les URL contiennent des informations d'identification intégrées (par exemple, https://user:pass@Host/
) sont bloquées.
J'ai lu et je l'ai contourné dans une requête ajax comme celle-ci:
comment remplacer les informations d'identification intégrées dans les demandes de sous-ressources
: =======================
Ma question est:
Est-ce que quelqu'un sait comment le faire directement dans le lien, ou pouvez-vous fournir une sorte de solution de contournement? Est-ce seulement possible?
Passer l'option de ligne de commande '--disable-blink-features = BlockCredentialedSubresources' restaure le comportement attendu. Si vous utilisez Selneium, vous pouvez le transmettre en tant qu'option args dans les fonctionnalités du navigateur pour restaurer le comportement attendu.
PHP: 'chromeOptions' => array ('args' => ['--disable-blink-features = BlockCredentialedSubresources']);
Python: capacités ['chromeOptions'] = {'args': ['--headless']}
Selon le ticket Chromium ( https://bugs.chromium.org/p/chromium/issues/detail?id=731618 ), ce problème peut ne pas être restauré dans les versions ultérieures alors qu'il se trouve dans 'Deprecation'. Dans ce cas, il serait peut-être préférable d'examiner les conduites ssh pour tester ou de répertorier l'IP de la liste blanche, si possible, afin d'empêcher l'interaction HTTP Auth.
Anthony
Si votre page comprend des fichiers css, javascript ou autres avec des emplacements relatifs ("dossier/fichier") ou relatifs par rapport à la base ("/ dossier/fichier"), le problème est que ces fichiers inclus seraient extraits de l'URL relative au fichier. URL de base de la page, qui comprend un composant utilisateur: pass.
C’est cet utilisateur: pass composant (que vous n’avez peut-être jamais voulu dire de toute façon ...) qui rend illégale l’URL des sous-ressources, après cette modification apportée à Chrome .
Si tel est votre problème, vous pouvez le résoudre en ajoutant une balise <base href="https://Host/">
à votre page (c'est-à-dire la même adresse de base, mais sans le composant user: pass). (Si votre page se trouve dans un sous-répertoire, vous devez également inclure le sous-répertoire dans le répertoire de base href, pour que les URL entièrement relatives fonctionnent.)
Pour être clair, des liens tels que <a href="https://user:pass@Host/">Link</a>
fonctionnent toujours (tant que l'utilisateur: pass URL est dans un lien qui s'ouvre dans une nouvelle page et n'est pas une URL pour un iframe, disons - qui est maintenant banni). Mais même lorsque le lien fonctionne, le problème que j'ai décrit ci-dessus s'applique aux éléments inclus avec des chemins relatifs dans la page nouvellement ouverte.
METTRE À JOUR:
Cela a été accepté en tant que bug dans Chrome , directement lié aux nouvelles modifications interdisant l'utilisateur: transmettez des URL de sous-ressources. Malheureusement, en suivant les liens dans cette discussion, il semble que la solution proposée et assez probable est pour supprimer totalement le support pour l'utilisateur: passer les URL }. Tout commentaire éclairé ajouté à cette discussion et plaidant en faveur du maintien de cette fonctionnalité serait probablement utile.
Pour gérer cela, nous devons passer les options de chrome: "--disable-blink-features = BlockCredentialedSubresources");
Le code complet est mentionné ci-dessous:
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("--disable-blink-features=BlockCredentialedSubresources");
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
driver = new ChromeDriver(capabilities);