Angular $ http选项代替发布

时间:2017-02-06 22:20:42

标签: javascript angularjs api http post

我向服务器api发出 File "PrimeCheck.py", line 39, in <module> result = list(map(is_prime,my_list)) File "PrimeCheck.py", line 32, in is_prime for n in range(3, x**(0.5)+1, 2): # this skips even numbers and only checks up to sqrt(x) TypeError: 'float' object cannot be interpreted as an intege 请求,但请求方法更改为$http POST。 我用localhost做这一切。所以我通过邮递员做了同样的请求,一切正常

服务:

OPTIONS

截图: http://joxi.net/Q2KLwPyUPE5jAj.png

2 个答案:

答案 0 :(得分:1)

实际上,您的preflight请求会被退回。

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

仅适用于浏览器,以及postman等其他工具发送和预检请求,因此您的代码可能会正常运行。

如何解决问题。

  • 将已接受选项GET, POST, OPTIONS, PUT的标头添加到请求的资源。

答案 1 :(得分:-2)

是的,它看起来像是个问题。

请尝试以下方法之一:

  1. 尝试在标题中设置引荐来源
  2. 试试这个:

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

  4. 参考:AngularJS performs an OPTIONS HTTP request for a cross-origin resource