第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

已被 CORS 策略阻止:對(duì)預(yù)檢請(qǐng)求的響應(yīng)未通過訪問控制檢查

已被 CORS 策略阻止:對(duì)預(yù)檢請(qǐng)求的響應(yīng)未通過訪問控制檢查

Go
慕的地8271018 2023-05-08 16:09:02
我已經(jīng)創(chuàng)建了旅行服務(wù)器。它工作正常,我們可以POST通過 Insomnia 發(fā)出請(qǐng)求,但是當(dāng)我們POST在前端通過 axios 發(fā)出請(qǐng)求時(shí),它會(huì)發(fā)送錯(cuò)誤:has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: It does not have HTTP ok status.我們對(duì)axios的要求:let config = {headers: {  "Content-Type": "application/json",  'Access-Control-Allow-Origin': '*',  }}let data = {  "id": 4 } axios.post('http://196.121.147.69:9777/twirp/route.FRoute/GetLists', data, config)   .then((res) => {      console.log(res)     })    .catch((err) => {      console.log(err)   });} 我的去文件:func setupResponse(w *http.ResponseWriter, req *http.Request) {    (*w).Header().Set("Access-Control-Allow-Origin", "*")    (*w).Header().Set("Access-Control-Allow-Methods", "POST,GET,OPTIONS, PUT, DELETE")    (*w).Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")}func WithUserAgent(base http.Handler) http.Handler {    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {    ctx := r.Context()    ua := r.Header.Get("Jwt")    ctx = context.WithValue(ctx, "jwt", ua)    r = r.WithContext(ctx)    setupResponse(&w, r)     base.ServeHTTP(w, r)  })}const (    host     = "localhost"    port     = 5432    user     = "postgres"    password = "postgres"    dbname   = "postgres")func main() {    psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+           "password=%s dbname=%s sslmode=disable",               host, port, user, password, dbname)    server := &s.Server{psqlInfo}    twirpHandler := p.NewFinanceServiceServer(server, nil)    wrap := WithUserAgent(twirpHandler)      log.Fatalln(http.ListenAndServe(":9707", wrap))}正如我之前在 Insomnia 上所說的那樣,它工作得很好,但是當(dāng)我們發(fā)出 axiosPOST請(qǐng)求時(shí),在瀏覽器的控制臺(tái)上會(huì)出現(xiàn)以下內(nèi)容:已被 CORS 策略阻止:對(duì)預(yù)檢請(qǐng)求的響應(yīng)未通過訪問控制檢查:它沒有 HTTP 正常狀態(tài)。
查看完整描述

7 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

我相信這是最簡單的例子:


header := w.Header()

header.Add("Access-Control-Allow-Origin", "*")

header.Add("Access-Control-Allow-Methods", "DELETE, POST, GET, OPTIONS")

header.Add("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With")

您還可以添加標(biāo)題Access-Control-Max-Age,當(dāng)然您可以允許任何您想要的標(biāo)題和方法。


最后你想回應(yīng)最初的請(qǐng)求:


if r.Method == "OPTIONS" {

    w.WriteHeader(http.StatusOK)

    return

}

編輯(2019 年 6 月):我們現(xiàn)在為此使用大猩猩。他們的東西得到了更積極的維護(hù),而且他們已經(jīng)這樣做了很長時(shí)間。留下舊的鏈接,以防萬一。


下面的舊中間件推薦: 當(dāng)然,為此使用中間件可能會(huì)更容易。我不認(rèn)為我已經(jīng)使用過它,但是這個(gè)似乎是強(qiáng)烈推薦的。


查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

這個(gè)答案解釋了幕后發(fā)生的事情,以及如何用任何語言解決這個(gè)問題的基礎(chǔ)知識(shí)。有關(guān)參考,請(qǐng)參閱有關(guān)此主題的 MDN 文檔。


您正在從一個(gè)域(比如 domain-a.com)上運(yùn)行的 JavaScript 向另一個(gè)域(domain-b.com)上運(yùn)行的 API 發(fā)出 URL 請(qǐng)求。當(dāng)您這樣做時(shí),瀏覽器必須詢問 domain-b.com 是否可以允許來自 domain-a.com 的請(qǐng)求。它通過一個(gè) HTTP 請(qǐng)求來做到這一點(diǎn)OPTIONS。然后,在響應(yīng)中,domain-b.com 上的服務(wù)器必須(至少)提供以下 HTTP 標(biāo)頭,上面寫著“是的,沒關(guān)系”:


HTTP/1.1 204 No Content                            // or 200 OK

Access-Control-Allow-Origin: https://domain-a.com  // or * for allowing anybody

Access-Control-Allow-Methods: POST, GET, OPTIONS   // What kind of methods are allowed

...                                                // other headers

如果您使用的是 Chrome,您可以通過按 F12 并轉(zhuǎn)到“網(wǎng)絡(luò)”選項(xiàng)卡來查看 domain-b.com 上的服務(wù)器給出的響應(yīng),從而查看響應(yīng)的樣子。


因此,回到@threeve 的原始答案的最低限度:


header := w.Header()

header.Add("Access-Control-Allow-Origin", "*")


if r.Method == "OPTIONS" {

    w.WriteHeader(http.StatusOK)

    return

}

這將允許任何人從任何地方訪問這些數(shù)據(jù)。由于其他原因,他包含的其他標(biāo)頭是必需的,但這些標(biāo)頭是通過 CORS(跨源資源共享)要求的最低要求。


查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

CORS 問題應(yīng)該在后端修復(fù)。臨時(shí)解決方法使用此選項(xiàng)。

  1. 打開命令提示符

  2. 導(dǎo)航到 chrome 安裝位置輸入cd "c:\Program Files (x86)\Google\Chrome\Application" OR cd "c:\Program Files\Google\Chrome\Application"

  3. 執(zhí)行命令chrome.exe --disable-web-security --user-data-dir="c:/ChromeDevSession"

使用上述選項(xiàng),您可以在沒有安全保護(hù)的情況下打開新的 chrome。這個(gè) chrome 不會(huì)拋出任何 cors 問題。

http://img1.sycdn.imooc.com//6458ae500001790a13200238.jpg

查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊

對(duì)于尚未找到解決方案的任何人,如果您正在使用:

  1. AWS HTTP API 網(wǎng)關(guān);

  2. 您正在使用帶有身份驗(yàn)證的任何方法進(jìn)行路由和 lambda 集成;

  3. 您認(rèn)為您已經(jīng)正確配置了 CORS;

該錯(cuò)誤是因?yàn)闉g覽器正在向您的路由發(fā)送預(yù)檢 OPTIONS 請(qǐng)求而沒有 Authentication 標(biāo)頭,因此無法獲得 CORS 標(biāo)頭作為響應(yīng)。

為了解決這個(gè)問題,我在沒有身份驗(yàn)證的情況下為 OPTIONS 方法添加了另一條路線,并且 lambda 集成僅返回 { statusCode: 200 };


查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

在 WebService 應(yīng)用程序中啟用 CORS。首先,添加 CORS NuGet 包。在 Visual Studio 中,從工具菜單中選擇 NuGet 包管理器,然后選擇包管理器控制臺(tái)。在包管理器控制臺(tái)窗口中,鍵入以下命令:


Install-Package Microsoft.AspNet.WebApi.Cors

此命令安裝最新的包并更新所有依賴項(xiàng),包括核心 Web API 庫。使用 -Version 標(biāo)志來定位特定版本。CORS 包需要 Web API 2.0 或更高版本。


打開文件 App_Start/WebApiConfig.cs。將以下代碼添加到 WebApiConfig.Register 方法:


using System.Web.Http;

namespace WebService

{

? ? public static class WebApiConfig

? ? {

? ? ? ? public static void Register(HttpConfiguration config)

? ? ? ? {

? ? ? ? ? ? // New code

? ? ? ? ? ? config.EnableCors();


? ? ? ? ? ? config.Routes.MapHttpRoute(

? ? ? ? ? ? ? ? name: "DefaultApi",

? ? ? ? ? ? ? ? routeTemplate: "api/{controller}/{id}",

? ? ? ? ? ? ? ? defaults: new { id = RouteParameter.Optional }

? ? ? ? ? ? );

? ? ? ? }

? ? }

}

接下來,將 [EnableCors] 屬性添加到您的控制器/控制器方法


using System.Net.Http;

using System.Web.Http;

using System.Web.Http.Cors;


namespace WebService.Controllers

{

? ? [EnableCors(origins: "http://mywebclient.azurewebsites.net", headers: "*", methods: "*")]

? ? public class TestController : ApiController

? ? {

? ? ? ? // Controller methods not shown...

? ? }

}


查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

Angular 和 Django Rest 框架。

我在向我的 DRF api 發(fā)出發(fā)布請(qǐng)求時(shí)遇到了類似的錯(cuò)誤。碰巧我所缺少的只是端點(diǎn)的尾部斜杠


查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

這里提供的解決方案是正確的。但是,同樣的錯(cuò)誤也可能發(fā)生在用戶錯(cuò)誤中,即您的端點(diǎn)請(qǐng)求方法與您在發(fā)出請(qǐng)求時(shí)使用的方法不匹配。

例如,當(dāng)您將方法請(qǐng)求為 POST 時(shí),服務(wù)器端點(diǎn)使用“RequestMethod.PUT”定義。


查看完整回答
反對(duì) 回復(fù) 2023-05-08
  • 7 回答
  • 0 關(guān)注
  • 6260 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)