我在离子2中使用以下代码来发布方法请求。
var headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json');
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Access-Control-Allow-Headers', 'Content-Type');
headers.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
let body = new FormData();
body.append('UserName', 'sp');
body.append('password', 's');
let options = new RequestOptions({ headers: headers })
this.http
.post('http://192.168.1.9:8080/api/Restaurant/Login', body, options)
.map(res => res.json())
.subscribe(
data => {
console.log("Response is ::::::",data);
},
err => {
console.log("ERROR!::::: ", err);
}
);
以上http://192.168.1.9:8080/api/Restaurant/Login是我的本地网址。使用此URL,我可以从iOS模拟器和邮递员获得请求/响应,但不能从离子2项目获得。
根据附带的屏幕截图我收到错误。
服务器端我们在CORS标题下面添加了。
<httpprotocol>
<customheaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customheaders>
</httpprotocol>
任何人都可以在我错的地方帮忙吗?
提前谢谢。
答案 0 :(得分:1)
在服务器端,您是否配置了WebSecurity?我对角度的体验是它在发送实际请求之前发送飞行前OPTIONS请求,如果您的服务器不支持OPTIONS请求,那么它将拒绝它。 我不确定这是否会对你有所帮助,因为它在Spring中设置了。
fetch(settings.url, settings)
.then(function (r) {
callback(null, {data: r});
}).catch(callback);
一切顺利!希望你能成功:) 快乐的编码