[英]Enable CORS in Azure Maps Account with Angular 7
我現在正在使用帶有 Angular 7 的 Azure Maps 帳戶並嘗試創建一個自動完成輸入。
我正在調用 URL:
this.http.get('https://atlas.microsoft.com/search/address/json?subscription-key=<key>&api-version=1.0&query=Newyork').subscribe(...)
當我在郵遞員中運行此鏈接時,它可以完美運行並響應我想要的數據。 但是當我使用 HttpClient 在 Angular 中調用時,我遇到了 CORS 問題。
我找不到可以在服務中更改 cors 的地方。 有人知道如何解決嗎?
此外,如果有人復制了這個 URL 並在其他地方使用了它,他將使用該服務,但需要支付我的費用。 如何使用特定的 URL 來保護它?
CORS(跨域資源共享)是服務器表示“即使您來自不同的來源,我也會接受您的請求”的一種方式。 這需要服務器的合作——因此如果您無法修改服務器(例如,如果您使用外部 API),則此方法將不起作用。
修改服務器以添加頭 Access-Control-Allow-Origin: * 以啟用來自任何地方的跨域請求(或指定域而不是 *)。
或者,這些插件適用於 HTTP,但不適用於最新的 httpClient。 此外,在服務器上配置 CORS 響應標頭並不是一個真正的選擇。 因此,我創建了一個 proxy.conf.json 文件來充當代理服務器。
proxy.conf.json
文件:
"/posts": {
"target": "https://example.com",
"secure": true,
"pathRewrite": {
"^/posts": ""
},
"changeOrigin": true
}
}
我將proxy.conf.json
文件放在同一目錄中的package.json
文件旁邊。
然后我修改了package.json
文件中的start命令:
"start": "ng serve --proxy-config proxy.conf.json"
來自我的應用程序組件的 HTTP 調用:
return this._http.get('/posts/pictures?method=GetPictures')
.subscribe((returnedStuff) => {
console.log(returnedStuff);
});
最后要運行我的應用程序,我必須使用npm start or ng serve --proxy-config proxy.conf.json
您可以在此處閱讀更多內容。
希望能幫助到你。
Azure Maps 現在添加了限制較少的 CORS 策略。 所有響應頭現在都應該包含必要的'Access-Control-Allow-Origin': '*'
。 還在這里跟進了這個線程。
Azure REST API 使用 CORS 響應標頭進行響應,但使用'Access-Control-Allow-Origin': '*'
作為響應標頭。 使用fetch
調用 API credentials: include
默認發送credentials: include
,瀏覽器報錯如下
當請求的憑據模式為“包含”時,響應中“Access-Control-Allow-Origin”標頭的值不得為通配符“*”。
fetch API提供了發送credentials
模式的選項。 使用此調用 Azure API 有效
fetch('https://example.com', {
credentials: 'omit' // or 'same-origin'
})
其他選項是通過網關/服務層等代理到這個 API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.