首頁  >  問答  >  主體

javascript - 為什麼jQuery可以正常請求,angularjs卻報跨域錯誤?

報 XMLHttpRequest cannot load http://example.com/v1/recharge. Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers in preflight response.

   recharge.createRecharge = function (
          operatorId, operatorName, amount, extraAmount, userId, userName) {
          var deferred = $q.defer();
          var data = {
            operator: {
              user_id: operatorId,
              user_name: operatorName
            },
            amount: amount,
            recharge_amount: amount + extraAmount,
            currency: 'SGD',
            user: {
              user_id: userId,
              user_name: userName
            }
          };

          data = angular.toJson(data);
          if (data) {
            $http({
              method: 'POST',
              url: 'example.com/v1/recharge',
              headers: {
                'Content-Type': 'application/json'
              },
              data: data
            })
              .success(function (d, status) {
                  deferred.resolve(d, status);
                }
              ).error(function (err, status) {
              console.log(err);
            });
          }

          return deferred.promise;
        };
        

下面這個卻可以,

 var data = {
          'operator': {'user_id': '4320-9962-1b83f8fc4264', 'user_name': '乱石铺街'},
          'amount': 1,
          'recharge_amount': 2,
          'currency': 'SGD',
          'user': {'user_id': '4b92-ad75-506590099de5', 'user_name': 'ssdss'}
        };
        $.ajax({
          url: 'example.com/v1/recharge',
          method: 'POST',
          dataType: 'json',
          headers:{'Content-Type': 'application/json'},
          data: JSON.stringify(data),
          success: function (data) {
            alert(JSON.stringify(data));
          }
        });           
高洛峰高洛峰2661 天前651

全部回覆(1)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-06-15 09:24:53

    那得看看你 "REWARDS_SERVICE_HOST"這個值是什麼了,你下面ajax中的url很明顯是相對路徑,請求的是本地項目的介面位址。

    但是如果你的"REWARDS_SERVICE_HOST"裡面帶上了http://.../v1 而http://.../並不是完全和你項目的域名端口一致的話,那麼就會報跨域啊

    回覆
    0
  • 取消回覆