Ich habe das Problem verfolgt gefunden bis zu diesem Aufruf:Express-jwt Throwing UnathorizedError: keine Authorization Token wurde in IE11, wenn Chrome und Firefox arbeiten
var validateJwt = expressJwt({
secret: config.secrets.session
});
die neueste Version von Express-jwt mit
hier ist die vollständige Datei
(auth.service.js from the angular-generator yeoman scafolding)
/**
* Attaches the user object to the request if authenticated
* Otherwise returns 403
*/
export function isAuthenticated() {
return compose()
// Validate jwt
.use(function(req, res, next) {
// allow access_token to be passed through query parameter as well
if (req.query && req.query.hasOwnProperty('access_token')) {
req.headers.authorization = 'Bearer ' + req.query.access_token;
}
console.log('In Auth Service');
console.log('Secret=' + config.secrets.session);
validateJwt(req, res, next);
})
// Attach user to request
.use(function(req, res, next) {
console.log('Attach User');
User.findByIdAsync(req.user._id)
.then(user => {
if (!user) {
return res.status(401).end();
}
req.user = user;
next();
})
.catch(err => next(err));
});
}
ich die "in Auth Service" log in IE und dann dieser Fehler sehen:
UnauthorizedError: No authorization token was found<br> at middleware (.../node_modules/express-jwt/lib/index.js:80:21)<br> at Middleware_Common_Object.<anonymous> (.../server/auth/auth.service.js:27:7)<br> at next (.../node_modules/composable-middleware/lib/composable-middleware.js:59:18)<br> at Middleware_Common_Object.middleware (.../node_modules/composable-middleware/lib/composable-middleware.js:76:7)<br> at middleware (.../node_modules/composable-middleware/lib/composable-middleware.js:31:25)<br> at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)<br> at next (.../node_modules/expres
In Chrome und Firefox funktioniert das gut und ich sehe das Protokoll "Benutzer anhängen".
Ich bin kein ausdrücklicher oder JWT (oder Javascript für diese Angelegenheit) Experte also irgendwelche Gedanken, warum dies nicht auf IE funktioniert? Ich kann mich nicht bei IE11 anmelden.
Headers für Chrome:
Kopf
{
"host":"localhost:9000",
"connection":"keep-alive",
"accept":"application/json, text/plain, */*",
"x-xsrf-token":"XyZYPphsmONBmSrE1MoiMh4zcclJhvArkppVM=",
"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
"authorization":"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzE1ODg0MjEyZTU3OTFkMzEwZmQ1MTMiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE0NjQyODQwNDMsImV4cCI6MTQ2NDMwMjA0M30.YJj4LaHdhRtzfr0AdjTkZwTZM2M4B0YSoR3qactkq8o",
"referer":"http://localhost:9000/login",
"accept-encoding":"gzip, deflate, sdch",
"accept-language":"en-US,en;q=0.8",
"cookie":"connect.sid=s%3AZBJISBM2X82Odr1f763gL_hOJPCTy75G.ePulOt7zpqSQ6WHmPVqMKsjFVboteA8ALhBcR6f4J70; _gat=1; _ga=GA1.1.1107287728.1463674097; token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzE1ODg0MjEyZTU3OTFkMzEwZmQ1MTMiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE0NjQyODQwNDMsImV4cCI6MTQ2NDMwMjA0M30.YJj4LaHdhRtzfr0AdjTkZwTZM2M4B0YSoR3qactkq8o; XSRF-TOKEN=XyZYPphsmONBmSrE1MoiMh4zcclJhvArkppVM%3D",
"if-none-match":"W/\"2-11FxOYiYfpMxmANj4kGJzg\""
}
// Körper war leer ...
Körper = {}
IE bekommen ...
IE11 : Kopf
{
"x-xsrf-token":"VnE872wcJGAcsDuqFPo4yX3eHCjib8+VuohJY=",
"accept":"application/json, text/plain, /",
"referer":"http://172.20.10.2:9000/login",
"accept-language":"en-US",
"accept-encoding":"gzip, deflate",
"user-agent":"Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko",
"host":"172.20.10.2:9000",
"dnt":"1",
"connection":"Keep-Alive",
"cookie":"XSRF-TOKEN=VnE872wcJGAcsDuqFPo4yX3eHCjib8%2BVuohJY%3D; connect.sid=s%3A-cBMyw42buDZePLCriiGqddXI2YSg5Ow.HKcDCPksLX7PIYpp9O1XK2aDUh%2BycceyNywDN8TZOTU; _ga=GA1.4.1855210034.1464283317; _gat=1; token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzE1ODg0MjEyZTU3OTFkMzEwZmQ1MTMiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE0NjQyODQwODgsImV4cCI6MTQ2NDMwMjA4OH0.-BF00BbZknsIjAcX-EDNMtwgKaw4UFDA-Ywm4-gTlNI"
}
// Körper leer Körper = {}
und diese Fehler aufgetaucht. UnauthorizedError: (nur von IE - leer auch leer auf Chrome) Keine Berechtigung Token wurde
Hinzufügen Req.query gefunden
Kopf
{ "x-XSRF-Token": "Q9WJPpcGYhLyBn1YX1I8asymB1rVtTfLN1ZJk =", "accept": "application/json, text/plain, /", "referer": "http://172.20.10.2:9000/login", "Akzeptieren-Sprache": "en-US", "accept-encoding": "gzip, deflate", "user-agent": "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv: 11.0) wie Gecko", "host": "172.20.10.2:9000","dnt":"1","connection" : "Keep-Alive", "Cookie": "_Ga = GA1.4.1855210034.1464283317; _Gat = 1; XSRF-TOKEN = Q9WJPpcGYhLyBn1 YX1I8asymB1rVtTfLN1ZJk% 3D; connect.sid = s% 3ANvaz9AfTMU3t0CDq-3aRzSIF7Uw_bmfh.GV6s5MXKpk3XiULQbmQrJR2w7QAuJxUb0BGCYfmjuic; token = eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzE1ODg0MjEyZTU3OTFkMzEwZmQ1MTMiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE0NjQyODg3NzcsImV4cCI6MTQ2NDMwNjc3N30.zCsSkIdHlcCmPUHvhNv5n2mkgQDhkxG9UO0sh3y-Y3C "} Körper =
{} ReqQuery
{}
/// Nach Erics versuchen was darauf hindeutet, und ändern Sie den Code mit dem Update auf die dazugehörigen Durchführungs angular-fullstack code Ich habe dies für einen Header auf IE. (aber leider nicht eingeloggt - bekam eine 401 auf dem/api/user/me. Teil. Ich werde später noch einige Änderungen später zurück, dass ich Vielleicht habe ich letzte Nacht getan, als ich zu müde war.
Kopf
{ "akzeptieren": "application/json, text/plain, /", "if-modified-since": "Mo, 26. Juli 1997 05.00.00 GMT" , "Cache-Kontrolle": "No-Cache", "Pragma": "No-Cache", "X-Xsrf-Token": "Ajy7jYPUQj7MnixtqqrvJRyxj/pv6s2P36eo =", "Referer": "http://192.168.1.17:9000/login?auth_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.e%E2%80%8C%E2%80%8ByJfaWQiOiI1NzE1ODg0MjEyZTU3OTFkMzEwZmQ1MTMiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE0NjQyOD%E2%80%8C%E2%80%8BQwNDMsImV4cCI6MTQ2NDMwMjA0M30.YJj4LaHdhRtzfr0AdjTkZwTZM2M4B0YSoR3qactkq8o", "akzeptieren-Sprache ":" en-US, de; q = 0.5 "," accept-encoding ":" gzip, deflate "," Benutzeragent ":" Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv: 11.0) wie Gecko "," host ":" 192.168.1.17:9000","dnt":"1","connection":"Keep-Alive" ,"cookie":"XSRF-TOKEN=Ajy7jYPUQj7Mnixtqq8rvJRyxj%2Fpv6s2P36eo%3D; connect.sid = s% 3A433OG6niC7AAUnnOQ2cnbZe0mW1Qx6Ag5.xi0KLW9FbkMOWIofcbuTXBNDGxZXfZu87XXDxZDNO6A; _ga = GA1.4.54 0511734.1464357176; _gat = 1; token = eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NzE1ODg0MjEyZTU3OTFkMzEwZmQ1MTMiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE0NjQzNTc4NjIsImV4cCI6MTQ2NDM3NTg2Mn0.Si_4hZuntOLWwYpT2WGEKVpYi36WA3_aiuHZj7445LY "}
Körper = {} Anf Abfrage = {}
/// was Hinzufügen Ich denke, ist der Code, den Autorisierungsheader Ich schätze jedermanns Zeit suchen sie in hinzufügen ! das mit mir
function authInterceptor($rootScope, $q, $cookies, $injector, Util) {
var state;
return {
// Add authorization token to headers
request(config) {
config.headers = config.headers || {};
if ($cookies.get('token') && Util.isSameOrigin(config.url)) {
config.headers.Authorization = 'Bearer ' + $cookies.get('token');
}
return config;
},
// Intercept 401s and redirect you to login
responseError(response) {
if (response.status === 401) {
(state || (state = $injector.get('$state'))).go('login');
// remove any stale tokens
$cookies.remove('token');
}
return $q.reject(response);
}
};
}
können Sie einen Dump-Header und einen Body aus dem 'req'-Objekt einfügen. Eine für Chome/Firefox und eine andere für IE11 –
Sicher - Vorschläge, wie dies zu tun ist? Ich werde googeln, wie es morgen geht und einfügen (Limping durch meine Startup Saas Codierung - auf der Suche nach einem soliden Mitarbeiter # 1 auch) –
Ich nehme an, nur Konsole log das Requ Objekt, brauchen Sie keine Paket-Sniffer richtig? –