Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 安圭拉酒店;Node.js CORS不适用于PUT/POST_Javascript_Angularjs_Node.js_Express - Fatal编程技术网

Javascript 安圭拉酒店;Node.js CORS不适用于PUT/POST

Javascript 安圭拉酒店;Node.js CORS不适用于PUT/POST,javascript,angularjs,node.js,express,Javascript,Angularjs,Node.js,Express,我的应用程序有CORS问题 我的堆栈是Node.js,包含Express 4和AngularJS 我已经尝试了一些方法,但我不断收到所有POST/PUT请求: No 'Access-Control-Allow-Origin' header is present on the requested resource. 在服务器端,我使用npmCORS模块启用了CORS var cors = require('cors'); var corsOptions = { origin: [ '

我的应用程序有CORS问题

我的堆栈是Node.js,包含Express 4和AngularJS

我已经尝试了一些方法,但我不断收到所有POST/PUT请求:

No 'Access-Control-Allow-Origin' header is present on the requested resource.
在服务器端,我使用npm
CORS
模块启用了CORS

var cors = require('cors');
var corsOptions = {
  origin: [
    'http://www.localhost:5555',
    'http://www.somedomain.com'
  ],
  methods: ['GET', 'HEAD', 'PUT', 'PATCH', 'POST', 'DELETE', 'OPTIONS'],
  allowedHeaders: [
    'Content-Type',
    'Content-Length',
    'Content-Range',
    'Content-Disposition',
    'Content-Description',
    'Access-Control-Allow-Origin',
    'Access-Control-Allow-Headers',
    'Authorization',
    'Origin',
    'X-Requested-With',
    'X-AUTH-TOKEN'
  ],
  credentials: true
};
app.use(cors(corsOptions));
在AngularJS部分中,我使用的是:

// App Config
App.config(['$httpProvider',
  function ($httpProvider) {
    $httpProvider.defaults.withCredentials = true;
  }
]);

// Request in the Angular service
var deferred = $q.defer();
var host = 'http://www.localhost:5555';
var id = 'some-id';
var data = {};

$http.put(host + '/roles/' + id, data).
  success(function (data) {
    deferred.resolve(data);
  }).
  error(function (err) {
    deferred.reject(err);
  });

return deferred.promise;
GET请求工作正常。PUT/POST请求不断返回上述相同的错误。然而,飞行前选项是成功的


谢谢

这适用于我在Express 4服务器中使用CORs的情况

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", "OPTIONS, POST, GET, PUT, DELETE");
  res.header("Access-Control-Allow-Headers", YOUR HEADERS HERE);
  res.header('Access-Control-Allow-Credentials', true);
  if ('OPTIONS' == req.method) {
      return res.sendStatus(200);
  } else {
      next();
  }
});

这对我来说适用于Express 4服务器中的CORs

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", "OPTIONS, POST, GET, PUT, DELETE");
  res.header("Access-Control-Allow-Headers", YOUR HEADERS HERE);
  res.header('Access-Control-Allow-Credentials', true);
  if ('OPTIONS' == req.method) {
      return res.sendStatus(200);
  } else {
      next();
  }
});

您是否正在本地主机上运行angular应用程序?如果是,则应将“http://localhost”添加到corsOption对象的源选项中。您可能需要创建代理。请检查此堆栈溢出@PabloMáximo我正在本地主机上运行应用程序进行开发,但也在生产中的域上运行。两个URL都在来源列表中(更新的问题)。我特别感兴趣的是找出为什么GET请求有效,而不是PUT/POST。你可以更新问题,在发出POST/PUT请求的地方添加代码吗?你是否在localhost中运行angular应用程序?如果是,则应将“http://localhost”添加到corsOption对象的源选项中。您可能需要创建代理。请检查此堆栈溢出@PabloMáximo我正在本地主机上运行应用程序进行开发,但也在生产中的域上运行。两个URL都在来源列表中(更新的问题)。我特别感兴趣的是找出为什么GET请求有效,而不是PUT/POST请求。您可以在发出POST/PUT请求的位置添加代码来更新问题吗?为什么这样可以解决问题?现有代码有什么问题?为什么要解决这个问题?现有代码有什么问题?