我正在用Spring-boot(在http://localhost:8080上)和angular(在http://localhost:80上)构建一个应用程序。
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost")
.allowCredentials(true)
;
}
}
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.formLogin()
.successHandler(successHandler())
.failureHandler(failureHandler())
//[...]
}
private AuthenticationSuccessHandler successHandler() {
return (httpServletRequest, httpServletResponse, authentication) ->
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
}
private AuthenticationFailureHandler failureHandler() {
return (httpServletRequest, httpServletResponse, e) -> {
httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
};
}
$http.post('http://localhost:8080/api/login', $.param({'username': username, 'password': password}),
{headers: {'content-type': 'application/x-www-form-urlencoded'}}
).then(function() {})
.catch(function(error) {};
如果我输入了正确的密码,http响应代码(我可以在Chrome控制台中看到)是200
,但我仍然到达catch
块(带有error.status=-1),并且我可以在控制台中看到以下错误消息:
XMLHttpRequest无法加载http://localhost:8080/api/login。请求的资源上没有“access-control-allow-origin”标头。因此,不允许访问源“http://localhost”。
如果输入错误的密码,我还会到达catch块,并显示以下错误消息:
根据我的经验,您需要在CORS中包含端口号,浏览器的错误消息有点误导。
您可以通过检查网络并检查请求头的origin
字段来验证这一点。响应头的access-control-allow-origin
中的值必须与该值完全匹配,包括协议和端口。
问题陈述:我有一些Rest的API,它们使用Spring安全性进行CSRF保护。此外,这些API将通过Angular WEB UI从不同的Origin/domain访问。我不需要Spring Authentication,因为身份验证由Siteminder处理。 方法:我遵循了Dave Syer提供的CSRF保护的链接:登录页面:Angular JS和Spring Security Part II
问题内容: 我有一个基于@RestController和AngularJS的简单项目。我可以将Angular的GET请求发送到@RestController,但无法发送POST请求。我在浏览器控制台中出错: XMLHttpRequest无法加载http:// localhost:8080 / add 。Access-Control-Allow- Headers不允许请求标头字段Content-Ty
“已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在‘访问控制允许来源’标头。” 当api被角度部分击中时获得此消息,但当邮递员击中endpoint时获得正确响应。
我使用的是Spring Boot版本2.0.2Release。下面是我的安全配置 加载http://localhost:8080/myurl失败:对预飞行请求的响应未通过访问控制检查:请求的资源上没有“access-control-allow-origin”标头。因此,不允许访问源“http://localhost:4200”。响应的HTTP状态代码为403。
我在spring cloud gateway应用程序中设置CORS配置时遇到了问题。我已经将以下配置设置为允许所有内容中的所有内容: 然而,当我调用endpoint到网关时,我会得到: null 以下是api gateway应用程序在调试时设置的日志(此处为完整日志):
如何在Spring Security标签(即令牌url)中启用CORS。我使用的是spring security 3.1和spring mvc 4.3.12。我已成功生成令牌以保护API,但无法在令牌url中启用CORS。我使用了以下代码来生成访问令牌 spring-security.xml 这就是我启用CORS但不起作用的方式 dispatcher servlet。xml 这就是我得到的错误 登