此问题与跨源资源共享(CORS,http://www.w3.org/TR/cors/)有关.
如果在发出CORS请求时出错,Chrome(以及AFAIK其他浏览器)也会向错误控制台记录错误.示例消息可能如下所示:
XMLHttpRequest无法加载
http://domain2.example.原产地http://domain1.example不被访问控制允许来源允许的.
我想知道是否有办法以编程方式获取此错误消息?我试过xhr.send()在try/catch中包装我的调用,我也尝试添加一个onerror()事件处理程序.两者都没有收到错误消息.
我刚刚开始使用Postman来测试我正在集成的API.
我有以下错误,一直出现
无效的CORS请求
请注意以下事项:
Invalid CORS request错误.到目前为止我发现了什么:
万一其他人有同样的问题,这里是如何解决它.转到Chrome浏览器中的https://www.getpostman.com/docs/capture.单击拦截器扩展,然后选择添加到chrome.添加后,浏览器和邮递员右上方会出现一个新图标,看起来像一个红绿灯.在邮递员点击这个,它变成绿色.然后为每个进入 第三灯的 请求添加标题.每个标题包含标题名称和值.开始在标题名称上键入,并显示允许的http标题列表 .选择"原点".在value for cell中,只需键入 服务器的完整URL 即可.(不要忘记'http://'或'https://').
其他材料谈到Access-Control-Allow-Method header,preflight requests
...还有一个说明性的Apache Tomcat CORS流程流程图.
我正在服务器内实现 CORS 协议,遵循CORS 标准。我的问题是当服务器希望拒绝特定来源时应如何响应。
我了解在允许来源时如何响应简单的预检请求。但是对于那些服务器不允许的 Origin 如何响应呢?我最初的猜测只是不返回任何 CORS 标头,这会导致预检请求失败(如所需)。
该标准在第 3.2.3 节中简要提到了这一点,但听起来它描述的是根本不希望参与 CORS 的服务器(与想要参与 CORS 并允许某些来源但不允许其他来源的服务器相反) ):
如果服务器不希望参与 CORS 协议,则其对 CORS 或 CORS 预检请求的 HTTP 响应不得包含任何上述标头。鼓励服务器在此类 HTTP 响应中使用 403 状态。
这是响应服务器不允许的来源的正确方法吗?客户端似乎可能会误解为“该服务器不允许任何跨源请求”(实际上,问题出在这个特定的源上,并且服务器将允许其他源)。
我知道这个问题,但它指的是规范的过时版本,答案似乎并不明确。