【问题标题】:How to enable CORS on Sonatype Nexus?如何在 Sonatype Nexus 上启用 CORS?
【发布时间】:2015-11-30 08:48:13
【问题描述】:

我想用 AngularJS 作为前端开发一个 Monitoring-WebApp 来处理不同的事情。核心元素之一是展示 Nexus-Artifacts/Repositories 的概述。 当我请求 REST-API 时,我收到以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:9090' is therefore not allowed access.

要修复此错误,我需要修改响应标头以启用 CORS。

如果有人熟悉这类问题并能给我答案,那就太好了!

【问题讨论】:

    标签: maven cors repository cross-domain nexus


    【解决方案1】:

    CORS 标头出现在您尝试调用的系统的响应中。 (这些在客户端[又名浏览器这种情况下]进行检查,您可以在后端实现调用以进行这些调用,并且在那里您可以忽略这些标头,但这可能会变得非常难以维护。)要更改那些你'需要proxy。所以你的应用程序不会像直接调用url一样

    fetch("http://localhost:9090/api/sometest")
    

    至少有两种方法:一种是在声纳服务器前直接添加代理,为大家修改header。出于安全原因,我真的不推荐这个。 :)

    另一个更易于维护的解决方案是通过监控网络应用程序的本地域,如下所示:

    fetch("/proxy/nexus/api/sometest")
    

    要实现这一点,您需要在您的应用程序运行的地方设置一个代理。这可以映射您所依赖的不同服务,并在必要时修改标头。

    我不知道你要使用哪个应用程序http server,但这里有一些关于该主题的代理配置文档:

    对于 Apache HTTPD mod_proxy,您可以使用类似于以下的配置:

    ProxyPass "/proxy/nexus/" "http://localhost:9090/"
    ProxyPassReverse "/proxy/nexus/" "http://localhost:9090/"
    

    可能还需要使用 cookie,因此您可能需要查看以下配置:

    对于 Nginx location,您可以使用以下内容

    location /proxy/nexus/ {
        proxy_pass http://localhost:9090/;
    }
    

    对于 node.js,请参阅文档:https://github.com/nodejitsu/node-http-proxy

    module.exports = (req, res, next) => {
    
      proxy.web(req, res, {
        target: 'http://localhost:4003/',
        buffer: streamify(req.rawBody)
      }, next);
    
    };
    

    【讨论】:

      猜你喜欢
      • 2012-08-22
      • 2014-09-04
      • 1970-01-01
      • 2023-04-07
      • 2014-05-20
      • 2017-07-04
      • 2017-03-14
      • 1970-01-01
      • 2014-11-25
      相关资源
      最近更新 更多