Ionic 3 http post请求无效的HTTP状态代码403,而jQuery ajax帖子工作正常

时间:2017-10-10 17:40:49

标签: ajax wordpress cordova ionic3 angular2-http

我正在开发一款移动应用。我需要从WordPress网站获取一些数据,但http请求总是通过错误 预检的响应包含无效的HTTP状态代码403

打字稿

this._http.post('http://www.example.com/wp-admin/admin-ajax.php',{
      'action' : 'get_votes',
      'postId' : 123456
    })
    .subscribe(data=>{
      console.log(data);
    },error=>{
     console.log(error);
    })

的jQuery

同样的事情是在本地服务器上使用jQuery

$.ajax({
                url: 'http://www.example.com/wp-admin/admin-ajax.php',
                type: 'post',
                dataType: 'JSON',
                data: {
                    'action': 'get_votes',
                    'postId': 123456
                },
                success: function(result) {
                    console.log(result);
                },
                error: function(error) {
                    console.log(error);
                }
            });

cordova-plugin-whitelist已安装。

config.xml中

<access origin="*" />
   <allow-intent href="http://*/*" />
   <allow-intent href="https://*/*" />

3 个答案:

答案 0 :(得分:1)

如果您使用header('Access-Control-Allow-Origin: *');进行测试,则需要允许//*[@id="submit"]的原始访问权限。使用chrome使用插件并配置它https://developer.android.com/training/app-links/index.html

如果您使用的是真实设备并且仍无法正常工作,请尝试将css_selector与服务器端API文件一起使用。

更多信息https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

答案 1 :(得分:0)

你可以使用离子代理来解决CORS问题,

ionic.config.json

"proxies": [
    {
      "path": "/api",
      "proxyUrl": "http://www.example.com/wp-admin/admin-ajax.php"
    }
  ]

你称之为this.http.post("/api")

答案 2 :(得分:0)

这是 CORS (跨域)问题。您的浏览器(不是Angular)在发送实际POST请求之前发送OPTIONS请求。实际上,您的服务器会丢弃OPTIONS请求,因为它未经过身份验证(或在您的情况下被禁止)。有关详细信息,请阅读this答案。

您是否尝试将“内容类型”标题设置为“application / x-www-form-urlencoded”或“multipart / form-data”?我认为这会导致浏览器在发送POST请求之前不发送OPTIONS请求。 因此,即使您解决了第一个问题(缺少OAuth标头),由于第二个问题,您可能仍然无法发布POST。

您也可以尝试安装Chrome Allow-Control-Origin extension