Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用http调用等读取html页面的DOM_Javascript_Ajax_Api_Rest_Xmlhttprequest - Fatal编程技术网

Javascript 使用http调用等读取html页面的DOM

Javascript 使用http调用等读取html页面的DOM,javascript,ajax,api,rest,xmlhttprequest,Javascript,Ajax,Api,Rest,Xmlhttprequest,我在以下地址有一个HTML页面: 我希望我可以通过javascript通过http调用读取DOM的一些元素我正在全部尝试,但我仍然有那个该死的控制台错误:CORS标题“访问控制允许源代码”丢失 我尝试了以下ajax调用,但没有成功,而是使用了一些所谓的参数: <!DOCTYPE html> <html lang="it"> <head> <meta charset="utf-8" /> <title>MAURIZIO

我在以下地址有一个HTML页面:

我希望我可以通过javascript通过http调用读取DOM的一些元素
我正在全部尝试,但我仍然有那个该死的控制台错误:
CORS标题“访问控制允许源代码”丢失

我尝试了以下ajax调用,但没有成功,而是使用了一些所谓的参数:

<!DOCTYPE html>
<html lang="it">

<head>
    <meta charset="utf-8" />
    <title>MAURIZIO</title>
    <link rel="stylesheet" type="text/css" href="background.css">
</head>

<body>
    <script src="https://code.jquery.com/jquery-3.5.1.js"
        integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
    <script>
        $.ajax("https://www2.casailaria.it/news/", {
            dataType: "jsonp",
            cors: true,
            secure: true,
            headers: {
                'Access-Control-Allow-Origin': '*', // or 'Access-Control-Allow-Headers: x-requested-with'
            },
            success: function (response) {
                console.log(response);
            }
        }); 
    </script>
</body>

</html>

毛里齐奥
$.ajax(”https://www2.casailaria.it/news/", {
数据类型:“jsonp”,
科尔斯:是的,
安全:是的,
标题:{
“访问控制允许来源”:“*”、//或“访问控制允许标头:x-request-with”
},
成功:功能(响应){
控制台日志(响应);
}
}); 
我希望我离解决方案不太远,我想我正在绕开它。一旦获得,我只想执行如下操作:
response.getElementsByClassName('myClassOfOtherPage')


我必须添加/删除什么才能使其正常工作?
欢迎使用其他javascript解决方案以及ajax调用,只要它们是CDN的一部分。

提前谢谢

CORS旨在保护用户不被窃取用户登录的其他网站上的会话和数据

您试图通过AJaX加载的页面位于不同的域中

如果您正在本地开发,并且只想进行测试,那么您可以在启动Chrome时使用一个忽略CORS的标志

如果您想在其他域上托管页面,则需要将CORS标题添加到
https://www2.casailaria.it/news/
。如果该页面是使用PHP创建的,则可以将其添加到该页面:

标题(“访问控制允许原点:”;

注意,*是不安全的。它应该是AJaX调用发起的页面的域。

您可以尝试实现两个修复:

  • 将CORS插件添加到浏览器中,并在访问页面时启用它
  • 在ajax调用中提到的url之前添加“”。因此,生成的url将是
    https://cors-anywhere.herokuapp.com/https://www2.casailaria.it/news/
  • 当您在本地访问代码时,这些功能将起作用

    如果选择选项2,则ajax调用的结构如下:

             $.ajax("https://cors-anywhere.herokuapp.com/https://www2.casailaria.it/news/", {
            dataType: "jsonp",
            cors: true,
            secure: true,
            headers: {
                'Access-Control-Allow-Origin': '*', // or 'Access-Control-Allow-Headers: x-requested-with'
            },
            success: function (response) {
                console.log(response);
            }
        });
    

    如果浏览器是Access Control Allow Origin,则不可能从浏览器请求页面。标头不允许这样做


    您可以设置一个小型服务器,并在后端请求页面无问题,或者您可以使用某种代理为您发出请求并返回数据。以前有一个名为anyorigin的代理可以做到这一点,但它是离线的。可能是因为这类事情很粗略。

    我刚刚发现这个网站是由Apache托管的。通常,您必须在Apache上启用cors,然后才能从其他域调用它

    要在Apache上启用cors,请检查以下内容


    在后端站点上启用后。再试一次,它就会起作用。

    我想你的问题在这里得到了回答。我试过了,什么也没有。然而,在这个问题中,引用的是json而不是html页面。另一件未指定的事情是将代码
    头集访问控制允许原点“*”
    放置在何处。而这两个问题和其他问题几乎从未指定将
    访问控制允许来源:
    放在何处。只是通过大量的浏览,我发现它必须进入
    标题
    。。。!问题仍然没有解决,我想你是糊涂了。Access Control Allow Origin位于响应标头中,不是您将发送到站点的内容。它是一种安全机制,用于防止来自未知域的资源的访问。读这个。那么我如何阅读dom呢?如果你仔细想想,我想这是可行的,而且不违反安全。如果有人可以查看页面源代码,为什么我不能通过javascript访问dom元素呢?我在这些方面不是高手。您试图访问的网站是一个新闻网站,因此它们具有非常强的安全性。您不能在客户端自行启用跨站点访问或读取策略。如果您使用的是服务器端脚本语言,那么可以使用代理。不幸的是,我不能使用php,否则它会很完美,有问题的页面会这样做…如果你不能更改源页面,那么就永远不可能用AJAX从不同的域获取它。我可以,但是通过客户端。这个页面是静态的,完全用html css和javascript+引导开发的……我看到了一个可行的解决方案。此时,ajax调用应该如何构造?你能给我举个例子吗?我只是建议修改url并保持ajax调用结构和你的一样。我在回答中添加了修改后的ajax调用。欢迎光临SO。您可能希望将链接的相关部分放在您的答案中,因为链接可能会被删除或过期。