【问题标题】:Node js / Angular js - CAUTION: Provisional headers are shown [duplicate]Node js / Angular js - 注意:显示临时标题[重复]
【发布时间】:2014-03-05 00:42:11
【问题描述】:

这是我的 Angular js 代码:

$http({
                method:'POST',
                withCredential:true,
                url:$scope.config.app_ws+'auth/signup',
                data:{user:$scope.auth}
            }).success(function(status, response){

                console.log(response);
            }).error(function(status, response){
                alert(response+'Bummer :( , an error occured plese retry later. ');
            });

这是我的 Node.js 块后端:

 var allow_cross_domain= function(req, res, next) {
      res.header('X-Powered-By', 'hey.heyssssssss.org');

      var oneof = false;
      if(req.headers.origin) {
        res.header('Access-Control-Allow-Origin', req.headers.origin);
        oneof = true;
      }
      if(req.headers['access-control-request-method']) {
        res.header('Access-Control-Allow-Methods', req.headers['access-control-request-method']);
        oneof = true;
      }
      if(req.headers['access-control-request-headers']) {
        res.header('Access-Control-Allow-Headers', req.headers['access-control-request-headers']);
        oneof = true;
      }
      if(oneof) {
        res.header('Access-Control-Max-Age', 60 * 60 * 24 * 365);
      }
    // intercept OPTIONS method
    if (oneof && req.method == 'OPTIONS') {
      res.send(200);
    } else {
      next();
    }
    }

    app.use(allow_cross_domain);

    app.post('/auth/signup', function (req, res) { res.send('wtff'); });

我只是从 Angular 向 Node 调用 POST localhost:3000/auth/signup,但我在 chrome 控制台中得到了**CAUTION : Provisional headers are shown.**

铬(小心):

Firefox(大约 30/60 秒没有响应,然后出现 alert() :/):

这可能是什么?

如果我使用 GET 一切正常,只是使用 POST 我会遇到麻烦,这怎么可能?

【问题讨论】:

    标签: javascript node.js angularjs http-headers xmlhttprequest


    【解决方案1】:

    此问题已于 2014 年 3 月 28 日修复 所以在下一个版本的 crome (v35) 中就可以了

    chromium community

    【讨论】:

    • 棒极了,但它仍然对移动应用程序编码有用。
    • 我正在使用 Chrome 43,仍然面临这个问题。
    【解决方案2】:

    我个人在 Angular 中使用这种“重置”方法:

    app.config(['$httpProvider', function ($httpProvider) {
      //Reset headers to avoid OPTIONS request (aka preflight)
      $httpProvider.defaults.headers.common = {};
      $httpProvider.defaults.headers.post = {};
      $httpProvider.defaults.headers.put = {};
      $httpProvider.defaults.headers.patch = {};
    }]);
    

    【讨论】:

    • 天哪,我已经解决了这个错误半天了,谢谢它的工作!!
    • 没问题。自己花了很多时间寻找答案
    • 如果我们能知道为什么会发生这种情况,那就太好了。
    • 出现此问题时,不会向服务器发送请求。你可以看看这个SO question。它使用 Jquery AJAX 与 PHP 进行通信。如果有人可以提供帮助,那就太好了。
    • 它对我不起作用。有人有解决办法吗?
    猜你喜欢
    • 2014-02-28
    • 2014-04-01
    • 2023-03-13
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2021-09-30
    相关资源
    最近更新 更多