访问路由URL时出现CORS错误

时间:2017-04-26 12:09:40

标签: angularjs cors

我正在使用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来帮助我

2 个答案:

答案 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>

请阅读指南以获取更多信息。