显然,我完全误解了它的语义.我想到了这样的事情:
好吧,我错了.它根本不起作用.所以,我已经阅读了跨源资源共享,并尝试在w3c推荐中阅读跨源资源共享
有一件事是肯定的 - 我仍然不明白我应该如何使用这个标题.
我完全控制了站点A和站点B.如何启用从站点A下载的javascript代码以使用此标头访问站点B上的资源?
PS
我不想使用JSONP.
对于一个项目,我正在查看各种HTML5和Javascript元素以及它们周围的安全性,我正试图让我的头脑刚刚绕过CORS.
根据我的测试,如果我删除..
<?php
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
?>
Run Code Online (Sandbox Code Playgroud)
..从试图访问的页面我在Chrome上的控制台日志中看到以下内容:
XMLHttpRequest cannot load http://www.bla.com/index.php. Origin http://bla2.com is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
我理解这是正确的,但Wireshark在返回时显示HTTP/1.1 200 OK,数据显示所请求页面的来源.那么只是浏览器和Javascript阻止responseText以任何实质性方式使用,即使它实际上被转移了吗?
代码如下:
function makeXMLRequest() {
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4) {
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET","http://www.bla.com/index.php",true);
xmlhttp.send();
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在使用AngularJS,但我遇到了与JQuery相同的问题,并且在JavaScript中也是如此.如果我访问的远程服务器设置了Access-Control-Allow-Origin,则调用success或error方法.
当没有Access-Control-Allow-Origin时,这些都没有被调用,我只能在控制台中看到错误.有没有办法捕获No Access-Control-Allow-Origin我的JavaScript代码中的
错误?
如果您对用例感兴趣,我正在构建PyPi的前端https://pypi.python.org/在那里,您可以获得有关JSON格式的包的信息.(例如https://pypi.python.org/pypi/dspy/json).这些请求设置了Access-Control-Allow-Origin,但是如果我发送一个不在服务器上的包的请求(例如 https://pypi.python.org/pypi/dspyz/json),那么我得到No Access -Control-Allow-Origin因此我的JavaScript代码中没有调用任何内容.
更新
经过一些实验后,我发现该error方法被调用它只是因为我使用的代码存在一些问题并且误导我而引发异常.
我有以下代码来检查网页是否可以被框架化:
var req = new XMLHttpRequest();
var test = req.open('GET', link, false);
console.log("test",test); //ALWAYS undefined
if(req.send(null)){ //ALWAYS throws error NS_ERROR_FAILURE
var headers = req.getAllResponseHeaders().toLowerCase();
console.log("headers");
}else{
console.log("FAILED");
}
Run Code Online (Sandbox Code Playgroud)
我用几个链接测试它,可以框架或不框架,但总是失败.你知道为什么吗?
链接: