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

CORS-如何“预检” httprequest?

诸葛雅达
2023-03-14
问题内容

我试图向WCF服务(我拥有)发出跨域HTTP请求。我已经阅读了几种处理跨域脚本限制的技术。因为我的服务必须同时容纳GET和POST请求,所以我无法实现某些动态脚本标签,其src是GET请求的URL。由于我可以自由地在服务器上进行更改,因此我开始尝试实现一种变通方法,该变通方法包括配置服务器响应以包括“Access-Control-Allow-Origin”标头以及带有和OPTIONS请求的“预检”请求。我从这篇文章中得到了一个主意:

在服务器端,我的网络方法是在HTTP响应中添加“ Access-Control-Allow-
Origin:*”。我可以看到响应现在确实包含此标头。我的问题是:如何“预检”请求(选项)?我正在使用jQuery.getJSON发出GET请求,但是浏览器立即声名狼藉地取消了该请求:

Access-Control-Allow-Origin不允许使用原始http:// localhost

有人熟悉这种CORS技术吗?客户需要对我的请求进行哪些更改?

谢谢!


问题答案:

在预检请求期间,您应该看到以下两个标题:Access-Control-Request-Method和Access-Control-Request-
Headers。这些请求标头向服务器询问发出实际请求的权限。飞行前响应需要确认这些标头,才能使实际请求正常工作。

例如,假设浏览器使用以下标头发出请求:

Origin: http://yourdomain.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-Custom-Header

然后,您的服务器应使用以下标头进行响应:

Access-Control-Allow-Origin: http://yourdomain.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: X-Custom-Header

要特别注意Access-Control-Allow-Headers响应标头。此标头的值应与Access-Control-Request-
Headers请求标头中的标头相同,并且不能为“ *”。



 类似资料:
  • 问题内容: 所以我用Go编写了这个RESTful后端,它将通过跨站点HTTP请求来调用,即从另一个站点(实际上,只是另一个端口,但是同源策略启动了,所以我们来了)提供的内容中调用。 在这种情况下,在某些情况下,用户代理将发送预检OPTIONS请求,以检查实际请求是否可以安全发送。 我的问题是如何在Go上下文中最好地处理和充分响应这些预检请求。我构想的方法感觉不太优雅,我想知道是否还有其他我没有想到

  • 问题内容: 这是我的配置: 现在,当我尝试访问我的API时,出现以下错误: 我在做什么错,以及如何正确配置CORS标头以避免发生此问题? 问题答案: 我已经通过创建新的CORS过滤器解决了此问题: 并将其添加到安全配置中: 更新-如今,我使用了更现代的方式切换到:

  • New in version 0.60. 本篇预检会协助你准备运行 ceph-deploy 的节点、和服务器节点,以使用无密码 ssh 和 sudo 。 通过 ceph-deploy 部署 Ceph 前,先要在管理节点和运行 Ceph 守护进程的节点上确认一些事情。 选装一个操作系统 在各节点安装最新发布的 Debian 或 Ubuntu (如 12.04 LTS 、 14.04 LTS ),关于

  • 问题内容: 我有两个VS项目:一个公开MVC5控制器,另一个是有角度的客户端。我希望有角度的客户端能够查询控制器。我阅读了许多主题,并尝试了以下方法: 我将此添加到服务器的Web配置中: 我在控制器的操作上创建并使用了以下过滤器: 在有角度的客户端中,我创建了以下拦截器: 根据Firebug,这导致以下请求: 以及以下响应: 而且,Firefox使用以下消息阻止请求: 问题答案: 通常,我阅读的线

  • 也许我做错了什么。 CORS策略阻止从来源“https://www.keycloak.org”访问“https://accounts.zoodexchange.com/auth/realms/development/protocol/openid-connect/token”处的XMLHttpRequest:请求的资源上没有“access-control-allow-orgin”标头。 您可以使用

  • 问题内容: 我已经创建了旅行服务器。它工作正常,我们可以通过Insomnia 进行请求,但是当我们通过前端的axios 进行请求时,它将发送错误: 我们对axios的要求: 我的文件: 就像我之前在Insomnia上所说的那样,它工作得很好,但是当我们发出axios 请求时,在浏览器的控制台上会显示以下内容: 已被CORS政策阻止:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态。 问题