我正在开发一款移动应用。我需要从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://*/*" />
答案 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。