Wenn ich derzeit an meinem Blog arbeite, denke ich darüber nach, Front-End und Back-End zu trennen, die Front-End- und Back-End-Logik in zwei separaten Repositorys zu platzieren und sie auf zwei Servern bereitzustellen.
Mein Hauptdomainname ist: godtail.cn
(Derzeit verwende ich ghost
, ein neuer Blog wird geschrieben...)
Der Front-End-Domainname lautet: www.godtail.cn
|
godtail.cn
m.godtail.cn
Der Backend-Domainname lautet:
api.godtail.cn
Aber bei der Kommunikation stellte ich fest, dass es dazu kam
跨域
Es kann von jeder Quelle aus zugegriffen werden. Gibt es eine JS-Injection?
Sowohl das Backend als auch das Frontend benötigen JSONP zur Verarbeitung. (Es ist nicht angenehm zu schreiben und alle Anfragen müssen JSONP verwenden.)
Wenn es viele Front-End-Domänennamen gibt, müssen viele Domänennamen hinzugefügt und verwaltet werden. Wenn andere Systeme Ihre Schnittstelle anfordern müssen, fügen Sie einen domänenübergreifenden Header hinzu? Nicht einfach damit umzugehen...
Antwortinhalt:
Wenn ich derzeit an meinem Blog arbeite, denke ich darüber nach, Front-End und Back-End zu trennen, die Front-End- und Back-End-Logik in zwei separaten Repositorys zu platzieren und sie auf zwei Servern bereitzustellen.
, ein neuer Blog wird geschrieben...)
godtail.cn
ghost
Der Front-End-Domainname lautet:
www.godtail.cn
godtail.cn
m.godtail.cn
Derzeit kenne ich zwei Möglichkeiten, das Problem zu lösen: api.godtail.cn
跨域
Gründe für Spekulationen:
Sowohl das Backend als auch das Frontend benötigen JSONP zur Verarbeitung. (Es ist nicht angenehm zu schreiben und alle Anfragen müssen JSONP verwenden.)
================【9-22 17:25】======================
Idee: Fügen Sie ein Ziel für
Domänennamen () anstelle eines fest codierten Domänennamens oder
hinzu
Ungefähre Implementierung (Pseudocode): Access-Control-Allow-Origin
Aber andererseits können Anforderungsheader simuliert werden, daher wird empfohlen, die Schnittstellenanforderungsparameter zu verschlüsseln und die Front-End-Skripte zu komprimieren und zu verschleiern.Access-Control-Allow-Origin
Beziehen Sie sich auf die Schnittstellenverschlüsselung von NetEase Cloud Music (holen Sie sich das Paket und Schauen Sie mal reinOrigin 请求头
*
<code>// 允许跨域访问的域名数组 string[] allowOrigins = { "http://www.godtail.cn/", "http://godtail.cn/", "http://m.godtail.cn/", }; // 判断 origin 是否是自己的前端域名,如果是则添加 if(allowOrigins.Count(x => x.Contains(Request.Headers["Origin"])) > 0) Response.Header.Add("Access-Control-Allow-Origin", Request.Headers["Origin"]);</code>
Setzen Sie den Header „Access-Control-Allow-Origin:*“ auf der Serverseite;
Das wurde oben erwähnt. Sie können die Zugangsadresse angeben~
Domänennamenweiterleitung auf einem Server, der keinen Front-End-Code verliert
Können domänenübergreifende Header nicht in regulärer Form geschrieben werden?
Die erste Methode, die ich übernommen habe, JSONP, Callback. Wenn es zu viele solcher Anfragen gibt, wird das Schreiben schwierig sein.
Die zweite Methode, die nicht funktioniert hat, nachdem ich sie ausprobiert habe, besteht darin, Access- festzulegen. auf die Antwort. Control-Allow-Origin..*?