Domänenübergreifende Anfragen werden in einfache und nicht einfache Anfragen unterteilt, die die folgenden zwei Bedingungen erfüllen Anfragen. Anforderungsmethode für einfache Anforderungen
请求方法 | 说明 |
head | 发送头部信息 |
get | |
post |
HTTP-Header-Informationen für einfache Anforderungen
http头信息 | 说明 |
accept | 指定客户端可以接受哪类信息,eg: image/git |
accept-language | 指定客户端可以接受的自然语言,如果没有指定,认为各语言都可以。eg:accept-language: zh-cn |
content-language | 描述实体报头和资源所用的自然语言。没有设置该规则认为实体内容将提供给所有的语言阅读 |
Last-Event-ID | 最后一次接收到事件的标识符 |
content-type | 实体报文和资源的类型,只限于三个值:application/x-www-form-unlencoded、multipart/form-data、text/plain |
请求头 | 说明 |
Access-Control-Allow-origin | 指定可以跨域访问的网站,可以设置为*,表示所有res.setHeader("Access-Control-Allow-origin","http://localhost")
|
Access-Control-Allow-Credentials | 有这个头或者值为true,表示可接受跨域的cookies。而withCredentials是客户端设置是否传递cookies到服务器。 |
Access-Control-Expose-Headers | 默认cors请求。客户端的xmlHttpRequrest只能拿到Cache-Control、Content-Language、Content-Type、Exprise、Last-Modified、Pragma等6个字段,其他头就需要通过Access-Control-Expose-Headers来指定 |
Wenn Access-Control-Allow-Credentials auf „true“ gesetzt ist oder dieser Header vorhanden ist, kann Access-Control-Allow-Origin nicht verwendet werden*.
Beim Senden eines Cookies kann Access-Control-Allow-Origin nicht * sein, das Cookie stammt immer noch von derselben Quelle und nur das vom Serverdomänennamen gesetzte Cookie wird hochgeladen .
Das document.cookie im ursprünglichen Webseitencode kann das Cookie (Client) unter dem Serverdomänennamen nicht lesen und kann auch nicht über xmlHttp.getResponseHeader("set-cookies" gelesen werden) ).
xmlHttp kann Foo- und Boo-Objekte erhalten
res.setHeader("Access-Control-Allow-origin","*"); res.setHeader("Access-Control-Expose-Headers", "foo,boo"), res.setHeader("foo", "foo"); res.setHeader("boo", "boo");
Wenn die Anforderungsmethode PUT, DELETE oder der Inhaltstyp application/json ist. Für nicht einfache Anfragen gibt es zwei Hauptschritte:
Vorabprüfung „Anfrage“, der Browser sendet eine Anfrage mit den Anfragemethodenoptionen und bringt dann die folgenden drei Überschriften
头部名称 | 说明 |
Origin | 表示发送请求发送的源域名 |
Access-Control-Request-Method | 需要跨域执行的请求方法(也可以叫动作) |
Access-Control-Request-Headers | 指定cors请求会额外发送的头部信息,给客户端自定义头部的机会 |
Der Dienst ermittelt, ob der Access-Control-Allow-Origin-Header angegeben ist und der Wert übereinstimmt. Wenn die Überprüfung bestanden wird, wird der folgende Header-Inhalt ausgegeben:
头部名称 | 说明 |
Access-Control-Allow-Methods | 表明服务器支持的cors请求方法,多个用逗号隔开 |
Access-Control-Allow-Headers | 如果请求有了Access-Control-Request-Headers头,必须返回此头,表明服务器支持的所有头部信息,多个用逗号隔开 |
Access-Control-Allow-Credentials | 与简单请求一致 |
Access-Control-Max-Age | 指定本次预验证的有效期,单位:秒 |
Access-Control-Request-Header und Access-Control-Request-Method müssen nicht von Entwicklern festgelegt werden, sie werden automatisch festgelegt Access -Control-Request-Headers werden auf der Grundlage der benutzerdefinierten Header der Anfrage generiert, während Access-Control-Request-Method auf der Grundlage der Methode der Anfrage generiert wird.
Falsche Header-Einstellungen:
3. Richtige Einstellungen:
Cookies können nicht domänenübergreifend gesetzt werden. Das vom Server ausgegebene Cookie ist ungültig
Ajax ruft den Set-Cookies-Header (Client) ab und es wird ein Fehler angezeigt
Das obige ist der detaillierte Inhalt vonZusammenfassung und Tests der CORS-Anforderungen (domänenübergreifend).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!