【问题标题】:Angularjs getting OPTIONS and POST requestAngularjs 获取 OPTIONS 和 POST 请求
【发布时间】:2017-01-11 18:24:05
【问题描述】:

我正在向不同的域发送一个 POST 请求,就像在 angular 中一样:

$http.post('http://domain.com/auth', { email: $scope.email, password: $scope.password })

在我的请求日志中,它只是发送一个 OPTION 请求。

所以我将此添加到我的domain.com/auth

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: GET, POST, PUT');

但是现在,我首先收到一个 OPTION 请求,然后是一个 POST 请求。所以因为我的 OPTION 请求是第一位的,所以我认为它仍然会影响我的结果。

有谁知道如何只获取 POST 请求而不获取 OPTIONS 请求?

【问题讨论】:

  • 根据MDN:“浏览器“预检”请求,使用 HTTP OPTIONS 请求方法从服务器请求支持的方法,然后在服务器“批准”后发送实际请求使用实际的 HTTP 请求方法。服务器还可以通知客户端是否应随请求发送“凭据”(包括 Cookie 和 HTTP 身份验证数据)。 See this 和下面的答案。

标签: php angularjs cors


【解决方案1】:

您可以通过触发 simple request 来阻止 POST 的预检

为此,请使用$httpParamSerializerJQLike 对数据进行编码(确保注入序列化程序)并将内容类型设置为application/x-www-form-urlencoded

$http({
  url: 'YOUR_ENDPOINT',
  method: 'POST',
  data: $httpParamSerializerJQLike(YOUR_DATA),
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})

【讨论】:

    猜你喜欢
    • 2018-06-23
    • 2014-04-16
    • 2014-04-09
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2013-08-16
    相关资源
    最近更新 更多