关于使用webapi,调用出现,跨域的问题,有高人帮我看看如何解决?
有朋友写了一个操作硬件的接口,用来控制某个硬件设备的开关。他访问的接口是用php给我封装的,也就是用php写了webapi,可以供我调用。他提供的参数方式是这样的:
调用的api接口完整地址:http://iot-local.joy-iot.com:8123/V1.0.0/stl201/doorOp/dooropen
参数说明:
请求参数:
{
"operatorId":"PZYNjFSErHeqpiVXP69TfxcCal4a",//由我提供,暂时为固定值
"operationId":"27c1913b4829438eba726b7d072446b4",//请求开门命令返回的执行ID号
"lockId":"ee6d7842-7ea3-4f1a-9f39-4c1bb636e55e",//锁编码
"token":"PZYNjFSErHeqpiVXP69TfxcCal4a"//由我提供,暂时为固定值
}
成功调用后的返回参数
{
"result": "success.",//成功
"reason": "fine.",//成功
"timestamp": "2018-6-27 14:33",//操作时间,UTC时间
"oprationId": "27c1913b4829438eba726b7d072446b4 "//本次操作的唯一编码
}
我用vs2012 c#,用mvc方式做了一个简单页面,来调用他的接口,具体页面代码如下:
@{
ViewBag.Title = "测试接口";
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>测试硬件接口</title>
<script type="text/javascript" src="~/Scripts/jquery-1.7.1.min.js"></script>
<link href="~/CSS/style.css" rel="stylesheet" />
<script type="text/ecmascript">
$(document).ready(function() {
$("#btnLockOpen").click(function () {
$.ajax({
type:"post",
url: "http://iot-local.joy-iot.com:8123/V1.0.0/stl201/doorOp/dooropen",
contentType:"application/json",
data: { operatorId: "PZYNjFSErHeqpiVXP69TfxcCal4a", operationId: "27c1913b4829438eba726b7d072446b4", lockId: "ee6d7842-7ea3-4f1a-9f39-4c1bb636e55e", token: "PZYNjFSErHeqpiVXP69TfxcCal4a" },
success:function(data){
if(data==true){
$("printresult").html("成功!");
}else{
$("printresult").html("失败!");
}
}
});
})
</script>
</head>
<body>
<p>
<input type="button" id="btnLockOpen" value="开" />
</p>
<div id="printresult">
</div>
</body>
</html>
我运行后,在 ie中,单击页面上的按钮没有任何效果,然后单击按钮看右键,“查看元素”,出现如下提示:
HTTP403: 禁止访问 - 服务器已了解请求,但将拒绝满足该请求。
(XHR)OPTIONS - http://iot-local.joy-iot.com:8123/V1.0.0/stl201/doorOp/dooropen。
也问了开发朋友,说是访问域的问题,浏览器端直接不允许这样的操作。但是我想通过这种方式来实现跨域访问,还是用c#,还是用mvc方式,有没有好的办法?求助