關於跨域踩的坑,瀏覽器 status code爲200,但其實是跨域了

背景

後端使用Nginx並更改本地host文件,起本地服務。將aaa.bbbb.com代理至本地IP地址(10.26.36.156)。
使用$.ajax調用後端restful接口,要求content-type爲application/json格式,並要求在request headers里加一些內容。前端

前端代碼:

$.ajax({
        headers : {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
          'user-id':'123',
          'ghf-id': '456'
        },
        url: 'https://10.26.36.156/aaa/vds/dsg',
        type: 'PATCH',
        data: JSON.stringify(data),
        dataType: 'json',
        success: function (response) {
           
        },
        error: function (msg) {
          
        }
  })

現象

後端使用postman 能夠訪問成功
瀏覽器network抓請求,結果以下,可是代碼並無觸發後端的代碼斷點....
這是爲何呢?node

clipboard.png

緣由

由於host文件的配置,騙過了瀏覽器,進行了一次options請求,可是對於js引擎來講,這裏的ip地址與瀏覽器的域名不一樣,因此出現了跨域,所以設置到了Access-Control-Request-Headers裏面。git

解決方案

方案一:
不走IP(不寫絕對路徑),而是相對路徑
方案二:
將IP地址加入白名單(node js裏面是如此,其餘語音應該也有相應的)。
借用凝雨關於跨域踩坑經驗總結github

相關文章
相關標籤/搜索