Javascript 使用$http选项代替post

Javascript 使用$http选项代替post,javascript,angularjs,api,http,post,Javascript,Angularjs,Api,Http,Post,我向服务器api发出$HTTPPOST请求,但请求方法更改为选项。 我用localhost来完成这一切。所以我通过邮递员提出了同样的要求,一切都顺利 服务: function httpReg(userData) { console.log(userData) return $http({ method: 'POST', url: CONFIG.APIHost + '/auth/sign

我向服务器api发出
$HTTPPOST
请求,但请求方法更改为
选项
。 我用localhost来完成这一切。所以我通过邮递员提出了同样的要求,一切都顺利

服务:

function httpReg(userData) {
            console.log(userData)
            return $http({
                method: 'POST',
                url: CONFIG.APIHost + '/auth/signup',
                data: {
                    "username": userData.username,
                    "email":userData.email,
                    "password": userData.password
                },
                headers: {
                    'Content-Type': 'application/json; charset=utf-8'
                }
            });
        }
截图:

(来源:)

是的,看起来像是cors问题

请尝试以下操作之一:

  • 尝试在标题中设置推荐人
  • 试试这个:

    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 = {};
    }]);
    
  • 从yeoman/gulp设置的_app.js文件中删除
    x-auth*
    设置


  • 参考资料:

    实际上,您的
    飞行前
    请求已被退回

    如果浏览器不信任您正在访问的数据源,则浏览器首先向该服务器发送
    飞行前
    请求,如果返回
    200OK
    ,则浏览器将发送您的原始请求

    仅适用于浏览器,其他工具(如
    postman
    dosen)不发送和预飞请求,因此您的代码可能会正常工作

    如何解决这个问题

    • 将已接受选项的标题
      GET、POST、options、PUT
      添加到请求的资源中

    这可能是服务器的CORS问题()。由于Postman的权限高于web内容,因此它不会遇到相同的问题。如果
    CONFIG.APIHost
    是另一台服务器,则它可能试图启动
    $http
    或angular或javascript都与此无关。浏览器对跨源请求执行此操作。端点需要是CORS enabledCONFIG.APIHost是一个不同的服务器CORS请求并不简单,需要一个选项预飞行。如果您的服务器不支持上述预飞行,则浏览器将拒绝该请求。修复服务器。