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

CORS和Access-Control-Allow-Header如何工作?

孙胜泫
2023-03-14
问题内容

我试图使CORS请求从domain.com发送到a.domain。com。

我的JavaScript看起来像这样

$('#fileupload').fileupload({
  xhrFields: {
    withCredentials: true
  },
  dataType: 'json',
  url: $('#fileupload').data('path'),
  singleFileUploads: true,
  add: function(e, data){
    data.submit();
  }
});

首先,我看到OPTIONS路由被这样调用:

Request URL: https://a.domain.com/some/route
Request Method:OPTIONS
Status Code:200 OK

选项要求:

Access-Control-Request-Headers:origin, content-type, accept
Access-Control-Request-Method:POST
Host:a.domain.com
Origin:http://domain.com:3000
Referer:http://domain.com:3000/home

选项响应

Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:POST
Access-Control-Allow-Origin:http://domain.com:3000
Connection:keep-alive
Content-Length:0
Content-Type:text/html;charset=utf-8

该请求返回200,如前所述。在我的服务器上,我的方法具有相同的路由,POST这是我在OPTIONS

Request URL:https://a.domain.com/some/route

发布请求

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryjwr5Pk7WBcfzMdbO
Origin:http://domain.com:3000
Referer:http://domain.com:3000/home

并且POST请求被取消/失败。

我的问题是,我是否还需要在POST控制器上具有access-control-allow-origin?

我有一个用于授权的cookie,.domain.com该cookie 具有在请求中一次发送过cookie的域,并且现在不发送。知道为什么会发生吗?


问题答案:

是的,您需要具有标头,Access-Control-Allow-Origin: http://domain.com:3000或者Access- Control-Allow-Origin: *同时具有OPTIONS响应和POST响应。您还应该Access-Control-Allow- Credentials: true在POST响应中包含标头。

您的OPTIONS响应中还应包含标头,Access-Control-Allow-Headers: origin, content-type, accept以匹配请求的标头。



 类似资料:
  • XMLHttpRequest无法加载http://localhost:8080/nobelgrid/api/users/create/。请求的资源上没有“访问-控制-允许-来源”标头。因此,不允许访问源'http://localhost:63342'。响应的HTTP状态代码为500。 谁能帮帮我吗? 更新: 但我还有一个错误。我会做另一个问题,因为我认为这是一个不同的论点。 提前感谢!

  • Response.AddHeader(“Access-Control-Allow-Origin”,“*”)是如何实现的;行设置多个标题时,包括,但没有当我删除它?

  • 我从ASP.NET表单中调用这个函数,在调用Ajax时在firebug控制台中得到以下错误。 跨源请求被阻止:同一源策略不允许读取http://anotherdomain/test.json上的远程资源。(原因:CORS标头“Access-Control-Allow-Origin”丢失)。 我做了其他的方法,但仍然找不到解决办法。 注意:我没有服务器权限进行服务器端(API/URL)更改。

  • 问题内容: 显然,我完全误解了它的语义。我想到了这样的事情: 客户端从http:// siteA- origin 下载javascript代码MyCode.js 。 MyCode.js的响应标头包含 Access-Control-Allow-Origin:http:// siteB ,我认为这意味着MyCode.js被允许对站点B进行跨域引用。 客户端触发了MyCode.js的某些功能,该功能继而

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

  • Access-Control-Allow-Origin响应 header 指示是否该响应可以与具有给定资源共享原点。 Header type Response header Forbidden header name no 语法 Access-Control-Allow-Origin: *Access-Control-Allow-Origin: <origin> 指令 * 对于没有凭据的请求,服务