当前位置: 首页 > 面试题库 >

访问控制允许起源错误

姬浩渺
2023-03-14
问题内容

我正在使用以下脚本-

<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.9.1.min.js"></script>
<script>
function postForm() {

    $.ajax({
            type: 'POST',
            url: 'http://10.0.0.8:9000/demo',
            data: {"name" : "test"},
            contentType: "application/json; charset=utf-8",
            dataType: 'json',
        })
    }

</script>
</head>
<body>
    <form id="ajaxForm" onsubmit="postForm(); return false; "  method="post"> 
        <input id="test" type="text" name="name" value="Hello JSON" /> 
        <input type="submit" value="Submit JSON" /> 
    </form>

</body>
</html>

我尝试访问的计算机正在运行播放框架。我收到以下错误:

选项http://10.0.0.8:9000/demo404(未找到)jquery-1.9.1.min.js:5
XMLHttpRequest无法加载http://10.0.0.8:9000/demo。原产地http://localhost:8080不被访问控制允许来源允许的。

我已经难过了两天,有人可以帮我吗?

提前谢谢


问题答案:

问题是您正在尝试进行跨域调用(从http://localhost:8080http://localhost:9000)。Same Origin
Policy
不允许这样做,因此浏览器试图使用跨域资源共享来询问服务器是否可以允许跨域调用。(这是OPTIONS您正在看到的HTTP请求。)由于服务器未OPTIONS使用允许调用的标头来答复请求,因此出于安全原因,浏览器拒绝了该请求。

SOP适用于所有真正的“ ajax”调用(例如,通过XMLHttpRequest)。您可以:

  1. 更新服务器以实现对OPTIONS请求的响应,并返回标头以允许调用(这将使其在大多数现代浏览器上运行),或者

  2. 将请求发送到同一端口(我想您没有这样做是有原因的),因此该请求发送到相同的源并且SOP不适用,或者

  3. 切换到使用JSON-P。但是JSON-P不适用于表单提交,因为它是GET,并且GET操作本应是幂等的,而大多数表单提交则不是。因此,除非这恰好是幂等的表单提交(例如,搜索),否则使用JSON-P充​​其量是最好的方法。



 类似资料:
  • 我有错误: XMLHttpRequest 无法加载 http://localhost:5984/cp_config/。当凭据标志为 true 时,不能在“访问控制-允许-源”标头中使用通配符“*”。因此,不允许访问源“http://localhost”。XMLHttpRequest 的凭据模式由 withCredentials 属性控制。 但我有一个标题: 我该如何解决这个问题?

  • 问题内容: 我尝试使用以下代码通过$ http(角度)发送http请求: 但这不起作用,并且我在Web控制台中有此错误: 你有解决方案吗 ? 问题答案: 您看到此错误是由于在浏览器中实现的称为Same Origin Policy的安全机制所致。 基本上,这是由于您的网页尝试访问驻留在与网页本身不同的主机,端口或方案(HTTP / HTTPS /文件等)所在的服务器上的资源而引起的。 为了解决此问题

  • 我正在创建一个脚本,加载在其他网站的外部。它加载CSS和HTML,在我自己的服务器上工作得很好。 但还是不管用。

  • 你有解决办法吗?

  • 问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您

  • 我已经设置了一个带有套接字io的节点服务器,并尝试通过另一台服务器连接到它。但是,不同计算机上的一些浏览器会给我这个错误并使其始终重新连接: XMLHttp请求无法加载https://serverDomain.net:3000/socket.io/?EIO=3 我的js配置: 我正在使用节点 8.0 和套接字 io 2.2,您的帮助将不胜感激。 编辑:这是客户端代码: