当前位置: 首页 > 知识库问答 >
问题:

Webkit浏览器不允许我设置CORS预飞行标题[重复]

叶健柏
2023-03-14

我正在尝试使用jQuery.ajax()创建一个跨源GET请求。我的服务器已配置为接受此类请求。Chrome不允许我发送标题:

访问控制请求方法

访问控制请求头

拒绝设置不安全的标头“访问控制请求方法”

这是我的ajax请求:

$.ajax({
    type:"GET",
    headers: {
        'Access-Control-Request-Method' : 'GET',
        'Access-Control-Request-Headers': 'X-Custom'
    },      
    url: "http://localhost:3000",       
    success: function(msg) {
        console.log(msg);
    }
});

我期望这些标题会导致浏览器创建一个飞行前请求(OPTIONS)来与服务器协商。我知道我以前已经完成了。有人能告诉我我忘记了什么吗?

谢谢!

共有1个答案

松越
2023-03-14

如果请求不是简单的请求,跨域请求会自动执行飞行前选项请求。简单请求通常是GET请求。因此,如果您发出跨域GET请求,则不会有飞行前选项请求。

但是,如果您发出跨域POST请求,浏览器将在您不指示的情况下首先发出飞行前选项请求。此请求的目的是查看服务器是否允许来自客户端域/IP的跨域POST请求。

如果您的服务器在响应中有正确的“访问控制”标头,也就是说,是的这个客户端被允许发出跨域的POST请求,那么浏览器将继续发出POST请求。如果您的服务器说否(因为您服务器上的访问控制标题是错误的),那么浏览器将尊重这一点,不会发出第二次发布请求。

看见https://www.html5rocks.com/en/tutorials/cors/#toc-处理一个不那么简单的请求以获取更多信息。

此外,您必须确保服务器已设置为处理传入的选项请求。

 类似资料:
  • 我已经按照这个步骤来设置我的服务器以启用CORS。https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enable-cross-origin-requests-in-web-api 但是现在在我的浏览器开发控制台中,我看到这个错误消息: 你知道我该怎么做才能修好它吗?我在HTTPS中提出一个CORS请求。我认为这是导致

  • 问题内容: 我试图在使用Express.js Web框架的Node.js应用程序中支持CORS。我已经阅读了有关如何处理此问题的Google小组讨论,并阅读了一些有关CORS工作原理的文章。首先,我做到了(代码是用CoffeeScript语法编写的): 它似乎不起作用。看来我的浏览器(Chrome)没有发送初始的OPTIONS请求。当我刚刚更新资源块时,我需要向以下站点提交跨域GET请求: 它可以

  • 在originAllow中,我正在传递我试图访问的url,但我得到以下错误, 请查找浏览器请求和响应头,响应头

  • 问题内容: 为了澄清当我询问浏览器到浏览器的通信时,我的意思是在转发消息之间没有服务器。我想为游戏实现这样的功能。如果无法在websockets中使用p2p,是否有类似的选择?任何帮助表示赞赏。 问题答案: 否。浏览器只能启动WebSockets连接,不能接收它们。在W3C的浏览器API规范只定义了如何启动出站连接。 您可以创建一个既可以启动也可以接受WebSockets连接的应用程序,但是浏览器

  • 我正在从主机(http://abc.com.au)向主机http://localhost:8081上运行的Spring Cloud API网关发送ajax请求。 jquery AJAX请求代码。 SimplifiedAdoptionBulkUpload.jsp spring cloud gateway cors配置。 我在chrome控制台中遇到以下错误。 SimplifiedAdoptionBu

  • 预览 在编辑器工具栏上选择 浏览器 后,点击旁边的按钮,会在用户的默认桌面浏览器中直接运行游戏的网页版本。推荐使用谷歌浏览器(Chrome)作为开发过程中预览调试用的浏览器,因为谷歌浏览器(Chrome)的开发者工具是最为全面强大的。 浏览器预览界面的最上边有一系列控制按钮可以对预览效果进行控制: 最左边选择预览窗口的比例大小,来模拟在不同移动设备上的显示效果 Rotate 按钮决定显示横屏还是竖