2

我有一个服务器设置,一切都很好,但我收到了关于

   ....  is not allowed by Access-Control-Allow-Origin

这很奇怪,因为托管我的 Angular.js 站点的 grunt 服务器都在端口 9000 上,而我的休息服务在端口 8678 上。

无论如何我发现了这个

  https://gist.github.com/Vp3n/5340891

它解释了如何在 grunt 服务器上启用 CORS,但我的 grunt 文件看起来不一样......这是我当前的 grunt 文件部分

  connect: {
      options: {
        port: 9000,
        // Change this to '0.0.0.0' to access the server from outside.
        hostname: 'localhost'
      },
      livereload: {
        options: {
          middleware: function (connect) {
            return [
              lrSnippet,
              mountFolder(connect, '.tmp'),
              mountFolder(connect, yeomanConfig.app)
            ];
          }
        }
      },
      test: {
4

2 回答 2

9

我不确定“我的 grunt 文件看起来不一样”是什么意思,但是您需要阅读 grunt-contrib-connect 文档的文档,该文档告诉您该middleware选项接受一个应该返回数组的函数中间件。

提到的要点是一个允许 CORS 的简单中间件。

在您的情况下,它看起来像:

connect: {
  options: {
    port: 9000,
    // Change this to '0.0.0.0' to access the server from outside.
    hostname: 'localhost'
  },
  livereload: {
    options: {
      middleware: function (connect) {
        return [
          lrSnippet,
          mountFolder(connect, '.tmp'),
          mountFolder(connect, yeomanConfig.app),
          function(req, res, next) {
            res.setHeader('Access-Control-Allow-Origin', '*');
            res.setHeader('Access-Control-Allow-Methods', '*');
            next();
          }
        ];
      }
    }
  },
  test: {
于 2013-06-22T23:20:27.147 回答
0

我面临同样的问题,无法让 Grunt 正常运行。这是来自 Gruntfile.js 的相应片段:

connect: {
  options: {
    port: 9000,
    // Change this to '0.0.0.0' to access the server from outside.
    hostname: '0.0.0.0',
    livereload: 35729
  },
  livereload: {
    options: {
      open: true,
      base: [
        '.tmp',
        '<%= yeoman.app %>'
      ]
    }
  },

使用中间件更新它以将Access-Control-Allow-...Headers设置为的正确方法是*什么?

于 2013-11-22T00:08:13.640 回答