我正在使用java和angularjs运行我的代码。服务器托管在端口 http://localhost:8080 中 当我点击 http://localhost:8080/data 时,我会收到以下错误
XMLHttpRequest无法加载 http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=? 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许来源“http://localhost:8080” 访问。
$routeProvider
.when('/', {
templateUrl: 'views/home.html',
controller: 'MainCtrl'
})
.when('/data', {
templateUrl: 'http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?'
})
我是Angular的新手。任何人都可以在我的代码中帮助我做错了。我在谷歌搜索过并找到了一些建议,以便在服务器端或浏览器端启用标头。我正在寻找能从我的代码本身做些什么。我知道在这个论坛上有很多类似的问题但是找不到合适的解决方案。如果有人可以通过提供任何链接而不是给我downvote来帮助我
答案 0 :(得分:1)
将这些放在标题中:
HttpServletResponse resp = (HttpServletResponse) servletResponse;
resp.addHeader("Access-Control-Allow-Origin","*");
resp.addHeader("Access-Control-Allow-Methods","GET,POST");
resp.addHeader("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept");`
答案 1 :(得分:0)
如果您在服务器端使用spring,则可以配置后端以允许来自外部服务器的原始访问(在您的情况下为flickr)
如果您是JEE-Configuration,您应该找到另一个xml-config示例,如下所示。
你可以在春季guiedes下找到一个例子
https://spring.io/blog/2015/06/08/cors-support-in-spring-framework
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://domain2.com")
.allowedMethods("PUT", "DELETE")
.allowedHeaders("header1", "header2", "header3")
.exposedHeaders("header1", "header2")
.allowCredentials(false).maxAge(3600);
}
}
如果是xml配置:
<mvc:cors>
<mvc:mapping path="/**" />
</mvc:cors>
<mvc:cors>
<mvc:mapping path="/api/**"
allowed-origins="http://domain1.com, http://domain2.com"
allowed-methods="GET, PUT"
allowed-headers="header1, header2, header3"
exposed-headers="header1, header2" allow-credentials="false"
max-age="123" />
<mvc:mapping path="/resources/**"
allowed-origins="http://domain1.com" />
</mvc:cors>
请阅读指南以获取更多信息。