Grunt Server:不支持CORS,给出错误

时间:2013-06-21 16:11:08

标签: angularjs cors gruntjs

我有一个服务器设置,一切都很顺利,但我收到错误

   ....  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: {

2 个答案:

答案 0 :(得分: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: {

答案 1 :(得分: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-...标题设置为*的正确方法是什么?