我想从我的本地开发箱发送一个Ajax请求使用服务器jQuery的阿贾克斯()GET请求发送选项
<!DOCTYPE html>
<html>
<head>
<title>JSSample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
var params = {
format: "JSON",
season: "2015REG"
// Request parameters
};
$.ajax({
url: "https://<mysite>/sub/" + params.format + "/" + params.season,
beforeSend: function(xhrObj){
// Request headers
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","<mykey>");
},
type: "GET"
})
.done(function(data) {
alert("success");
console.log("Data: \n" + JSON.stringify(data));
})
.fail(function(error) {
alert("error");
console.log("Error" + JSON.stringify(error));
});
});
</script>
</body>
</html>
当我看着到Firefox我看到它实际上是发送一个OPTIONS
请求 - 服务器没有响应(未找到404),所以我得到一个跨域请求被阻止的错误。
OPTIONS
XHR
https://mysite [HTTP/1.1 404 Resource Not Found 2437ms]
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://mysite (Reason: CORS header 'Access-Control-Allow-Origin' missing).
我在做什么错?为什么当我明确发送一个GET时,jquery试图要求选项?另外,我不拥有这个服务器,它的另一家公司,它有一个订阅API,所以我不能泄露密钥或任何信息来帮助排除故障。
对不起,我只是更新问题说我没有拥有服务器。但是,我能够使用Chrome RestClient应用程序来测试请求,并且使用该客户端成功。这是否意味着我在代码中做错了什么? – Derek
[JSONP](http://dev.socrata.com/docs/cors-and-jsonp。html)可能是另一种选择 - 但是,如果OP遇到了这个问题,那么看起来OP在做一些本质上是错误的事情。 –
@Derek你可能想要用完整的代码来更新你的问题。 –