簡體   English   中英

通過 Angular 啟用 CORS

[英]Enable CORS through Angular

我正在使用 Angular 7,我應該構建一個前端,后端部署在 Heroku 上。 由於我無法編輯后端(顯然沒有啟用 CORS),我無法訪問任何 api,並且出現錯誤:

Access to XMLHttpRequest at ' http://ebit-front-test.herokuapp.com/register ' from origin ' http://localhost:4200 ' has been blocked by CORS policy: Response to preflight request doesn't pass access control check : 它沒有 HTTP ok 狀態。 register.service.ts:31

后端返回代碼 0,正文為:[object ProgressEvent]

有沒有辦法通過 Angular 啟用 CORS,或者避免這個問題。 我曾嘗試使用自定義代理配置,但效果不佳。

*這個問題與其他類似問題不同,因為他們實際上可以訪問他們的后端,而我必須在沒有訪問后端的情況下解決問題。

您可能想在 Angular 中設置本地代理。 angular.json添加選項proxyConfig指向您的定義文件:

        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "your-client:build",
            "proxyConfig": "proxy.conf.json"
          },

並創建proxy.conf.json文件,例如:

{
  "/register": {
    "target": "http://ebit-front-test.herokuapp.com/register",
    "secure": false
  }
}

然后從客戶端調用 url 作為http.post('/register') 調整您的代理配置,使其捕獲所有 api 路由。

更多閱讀...

CORS 需要在服務器上配置為“真正的”應用程序,您希望非開發人員使用該應用程序。

但是,出於測試目的,您可以使用代理服務器來添加服務器應添加的標頭。

例如,參見https://elements.heroku.com/buttons/marcus2vinicius/cors-anywhere

對於遇到此問題的其他所有人,我找到了一種避免 CORS 錯誤的方法。 如果您在沒有 web 安全性的情況下運行 Chrome,則 CORS 錯誤將消失。

這不會啟用 CORS,所以它是一個臨時解決方案,如果您無法訪問您的后端,但需要開發前端。

在沒有 web 安全性的情況下運行的步驟:

1)以管理員身份運行命令提示符,並使用此命令殺死所有 Chrome 實例:

taskkill /F /IM chrome.exe

2) 使用以下命令運行禁用 web 安全性的新 Chrome 實例:

啟動 chrome https://teckangaroo.com/chrome-disable-web-security/ –disable-web-security –user-data-dir=”C:\teckangaroo.com”

應該這樣做!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM