在cypress测试中请求路由时出现CORS错误

在cypress测试中请求路由时出现CORS错误,cors,cypress,Cors,Cypress,我想模拟SPA完成的一些API调用。因此,我正在使用cypress.JS,并通过以下测试检查了如何做到这一点 it("Then it works", () => { axios.defaults.baseURL = 'http://localhost'; cy.server() cy.route("GET", "http://localhost/users/", true) axios.get("/users/").then(response =>

我想模拟SPA完成的一些API调用。因此,我正在使用cypress.JS,并通过以下测试检查了如何做到这一点

it("Then it works", () => {
    axios.defaults.baseURL = 'http://localhost';

    cy.server()
    cy.route("GET", "http://localhost/users/", true)

    axios.get("/users/").then(response => {
        console.log("received response: " + response)
        expect(response.body).to.equal(true)
    }).catch(error => console.log(error))
})
当我收到错误“CORS策略已阻止从源“”访问“”处的XMLHttpRequest:请求的资源上不存在“Access Control Allow origin”标头”时,该错误不起作用


是否有任何方法可以防止测试期间出现此错误?我不明白为什么Cypress处理这个简单的测试时会出现这个错误。

在您的
Cypress.json
中,将
chromeWebSecurity
设置为
false

{
  "chromeWebSecurity": false
}
从cypress文档中,将
chromeWebSecurity
设置为
false
可以执行以下操作:

  • 显示不安全的内容
  • 导航到没有跨原点错误的任何超域
  • 访问嵌入在应用程序中的跨源iFrame

    • 问题是,我使用基本url localhost:8080配置了cypress

      {
        "baseUrl": "http://localhost:8080"
      }
      
      但在我的测试中只使用了本地主机

         it("Then it works", () => {
      
          cy.server()           
          cy.route({
              method: 'GET',     
              url: '/users/1',    
              response: true        
          })
      
          axios.get("http://localhost:8080/users/1").then(response => {
              console.log("received response: " + response)
              expect(response.body).to.equal(true)
          }).catch(error => console.log(error))
      })
      

      测试仍然不起作用,但我最初的问题得到了回答。发生错误是因为缺少端口。当我找到其他问题的解决方案时,我将更新此信息。

      “本地主机应位于同一位置。”-
      http://localhost
      http://localhost:8080
      不是同一来源。可能的重复不是重复,因为我不是在问CORS错误是什么意思。我在问为什么Cypress处理我的测试的方式会导致这个错误。我现在在我的问题中更清楚地说明了这一点。你的第一句话是一个很好的暗示。谢谢。请注意,这对除Chrome以外的浏览器不起作用