Javascript $.ajax请求与CORS
我遇到AJAX请求的问题。我得到了以下错误: 错误:访问被拒绝 我尝试了这个jQuery AJAX请求:Javascript $.ajax请求与CORS,javascript,jquery,ajax,cors,cross-domain,Javascript,Jquery,Ajax,Cors,Cross Domain,我遇到AJAX请求的问题。我得到了以下错误: 错误:访问被拒绝 我尝试了这个jQuery AJAX请求: $.support.cors = true; $.ajax({ url: 'http://testwebsite.com/test', type: "GET", dataType: 'json', contentType: 'application/json', crossDomain: true, headers: { 'Ac
$.support.cors = true;
$.ajax({
url: 'http://testwebsite.com/test',
type: "GET",
dataType: 'json',
contentType: 'application/json',
crossDomain: true,
headers: {
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
'Access-Control-Allow-Origin': 'http://testwebsite/test',
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Credentials': 'true'
},
xhrFields: {
withCredentials: true
},
success: function(data) {
alert("Data from Server" + JSON.stringify(data));
},
error: function(jqXHR, textStatus, errorThrown) {
alert("You can not send Cross Domain AJAX requests: " + errorThrown);
}
});
谁能告诉我我错过了什么。提前感谢。如评论中所述,CORS保护的设计使网站无法直接访问另一网站(在浏览器中)的内容,除非被访问的网站同意
如果一个站点为了绕过防御只需要发送一些头文件,这将彻底破坏CORS的优势
相反,您需要使用CORS代理。它是一个服务器,当发出请求时,如yourCORSproxy.example.com/http://testwebsite/test
将加载并返回页面,但允许使用CORS(与普通代理一样,但启用了CORS)
其中一个CORS代理是,但在写这篇文章的时候,它被记录下来了。如果您只需创建自己的代理,它可能会更稳定
tl;dr:
testsite.test
应在其响应上发送标题。您不应该发送请求的标题。CORS标题需要放在服务器返回的响应上,而不是放在您的请求上。如果响应中没有CORS头,则应将其添加到服务器端。如果您无法控制服务器来添加这些头,那么您就无法从JS发出请求。您需要在服务器端执行此操作。您发送的这些头文件实际上可能会导致CORS问题。