访问控制允许来源代码 405?
Access-Control-Allow-Origin code 405?
我正在使用 Jhipster 和 Jhipster-ionic 以及 cordova 开发移动应用程序。
目前,我正在使用基于令牌的 AngularJS 身份验证 (Satellizer) 来使用 OAuth 2.0 登录,我遇到了 CROSS 来源的问题。
我在 Satellizer-ionic 上遵循了这个例子,我做了休耕
我的配置:
.config(function($authProvider) {
$authProvider.httpInterceptor = false;
$authProvider.withCredentials = true;
var commonConfig = {
popupOptions: {
location: 'yes',
toolbar: 'yes',
width: window.screen.width,
height: window.screen.height
}
};
if (ionic.Platform.isIOS() || ionic.Platform.isAndroid()) {
commonConfig.redirectUri = 'http://localhost:3000/';
}
$authProvider.facebook(angular.extend({}, commonConfig, {
clientId: 'MyFacebookId',
url: 'http://localhost:8080/social/signup'
}));
$authProvider.google(angular.extend({}, commonConfig, {
clientId: 'Myid.apps.googleusercontent.com',
url: 'http://localhost:8080/social/signup'
}));
})
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
});
});
控制器:
vm.authenticate = function(provider) {
$auth.authenticate(provider)
.then(function(res) {
$ionicPopup.alert({
title: 'Success',
content: 'You have successfully logged in!'
})
console.log("yes google login works");
console.log('success', 'Welcome', 'Thanks for coming back, ' + res.user.displayName + '!');
})
.catch(function(error) {
console.log(error);
$ionicPopup.alert({
title: 'Error',
content: error.message || (error.data && error.data.message) || error
});
console.log("too bad" + error.data);
});
};
HTML:
<button class="btn btn-full btn-fb active db" ng-click="vm.authenticate('google')" type="submit" translate="{{'welcome.loginGoogle' |translate}}"></button>
<button class="btn btn-full btn-fb active db" ng-click="vm.authenticate('facebook')" type="submit" translate="{{'welcome.loginFacebook' |translate}}"></button>
但是我得到了这个错误:
我取消了 application.yml
上的注释
cors: #By default CORS are not enabled. Uncomment to enable.
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers:
allow-credentials: true
max-age: 1800
我的Jhipster版本是v3.5.1。
我在我的代码上犯了一些错误 commonConfig.redirectUri 应该是我的后端 URL,这里是解决方案:
.config(function($authProvider) {
$authProvider.httpInterceptor = false;
$authProvider.withCredentials = true;
var commonConfig = {
popupOptions: {
location: 'yes',
toolbar: 'yes',
width: window.screen.width,
height: window.screen.height
}
};
if (ionic.Platform.isIOS() || ionic.Platform.isAndroid()) {
commonConfig.redirectUri = 'http://localhost:8080/sigin/google';
}
$authProvider.google(angular.extend({}, commonConfig, {
clientId: 'googleAppId',
// url: "http://localhost:8080/sigin/google"
}));
console.log($authProvider);
})
.run(function($ionicPlatform) {
console.log($ionicPlatform);
$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
});
});
我正在使用 Jhipster 和 Jhipster-ionic 以及 cordova 开发移动应用程序。 目前,我正在使用基于令牌的 AngularJS 身份验证 (Satellizer) 来使用 OAuth 2.0 登录,我遇到了 CROSS 来源的问题。
我在 Satellizer-ionic 上遵循了这个例子,我做了休耕
我的配置:
.config(function($authProvider) {
$authProvider.httpInterceptor = false;
$authProvider.withCredentials = true;
var commonConfig = {
popupOptions: {
location: 'yes',
toolbar: 'yes',
width: window.screen.width,
height: window.screen.height
}
};
if (ionic.Platform.isIOS() || ionic.Platform.isAndroid()) {
commonConfig.redirectUri = 'http://localhost:3000/';
}
$authProvider.facebook(angular.extend({}, commonConfig, {
clientId: 'MyFacebookId',
url: 'http://localhost:8080/social/signup'
}));
$authProvider.google(angular.extend({}, commonConfig, {
clientId: 'Myid.apps.googleusercontent.com',
url: 'http://localhost:8080/social/signup'
}));
})
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
});
});
控制器:
vm.authenticate = function(provider) {
$auth.authenticate(provider)
.then(function(res) {
$ionicPopup.alert({
title: 'Success',
content: 'You have successfully logged in!'
})
console.log("yes google login works");
console.log('success', 'Welcome', 'Thanks for coming back, ' + res.user.displayName + '!');
})
.catch(function(error) {
console.log(error);
$ionicPopup.alert({
title: 'Error',
content: error.message || (error.data && error.data.message) || error
});
console.log("too bad" + error.data);
});
};
HTML:
<button class="btn btn-full btn-fb active db" ng-click="vm.authenticate('google')" type="submit" translate="{{'welcome.loginGoogle' |translate}}"></button>
<button class="btn btn-full btn-fb active db" ng-click="vm.authenticate('facebook')" type="submit" translate="{{'welcome.loginFacebook' |translate}}"></button>
但是我得到了这个错误:
我取消了 application.yml
上的注释cors: #By default CORS are not enabled. Uncomment to enable.
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers:
allow-credentials: true
max-age: 1800
我的Jhipster版本是v3.5.1。
我在我的代码上犯了一些错误 commonConfig.redirectUri 应该是我的后端 URL,这里是解决方案:
.config(function($authProvider) {
$authProvider.httpInterceptor = false;
$authProvider.withCredentials = true;
var commonConfig = {
popupOptions: {
location: 'yes',
toolbar: 'yes',
width: window.screen.width,
height: window.screen.height
}
};
if (ionic.Platform.isIOS() || ionic.Platform.isAndroid()) {
commonConfig.redirectUri = 'http://localhost:8080/sigin/google';
}
$authProvider.google(angular.extend({}, commonConfig, {
clientId: 'googleAppId',
// url: "http://localhost:8080/sigin/google"
}));
console.log($authProvider);
})
.run(function($ionicPlatform) {
console.log($ionicPlatform);
$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
});
});