Home >Web Front-end >JS Tutorial >How to solve the problem of cross-domain requests

How to solve the problem of cross-domain requests

清浅
清浅Original
2018-12-01 15:17:1832835browse

Methods to solve cross-domain requests include: jsonp uses the loading of script tags in the page to implement cross-domain requests; cors matches the current source point through the source point specified in the response header. To implement cross-domain requests

The cross-domain requests we often talk about are requesting resources from other domain names in one domain. The other domain names here not only refer to domain names, but also include many contents such as protocols, domain names, and ports. If the two domains are different, the two domains will also be regarded as different. Therefore, in the following article, we will introduce in detail how to solve the cross-connection problem. Domain request issue.

【Recommended course: JavaScript Tutorial

How to solve the problem of cross-domain requests

Same Origin Policy

Sometimes we get errors during operation because we violate the Same Origin Policy, which is a security measure implemented by the browser for Limit interactions between documents with different origins. The origin of a page is defined by its protocol, host and port number. Resources with the same origin have full access to each other. However, access will be denied if the source is not the same.

http://www.a.com/a.js 
http://www.b.com/a.js 
这两个之间就不可以互相访问,因为域名的不相同

Domain name composition

timg (24)_看图王.jpg

If the above two domain names want to access each other, they need cross-domain requests. Generally speaking, the same-origin policy stipulates that cross-origin writes are allowed but cross-origin reads are not allowed. This means that the same-origin policy does not prevent data from being written to the domain, but only prohibits them from reading data from the domain, or from its Do nothing with the response received by the domain.

Cross-domain request method

JSONP

JSONP is called a JavaScript object representation with padding and is a Cross-domain requests can be implemented by using script tags in HTML pages to load code from different sources. JSONP relies on the fact that the <script> tag can come from different sources. When the browser parses the <script> tag, it fetches the script content and executes it within the context of the current page. Typically, the service will return HTML or some data represented in a data format such as XML or JSON. However, when making a request to a JSONP-enabled server, it returns a script block that, when executed, calls the page-specified callback function and provides the actual data as a parameter. </script>

NOTE: It does not Same origin restrictions, good compatibility even in older browsers but JSONP can only be used to perform cross-domain GET requests, the server must explicitly support JSONP requests.

How to solve the problem of cross-domain requests

CORS method

provides a mechanism for the server to tell the browser that it can request domain A to read the data from domain B. data. This is done by including a new Access-Control-Allow-Origin HTTP header in the response. When the browser receives a response from a cross-origin origin, it will check the CORS header. If the origin specified in the response header matches the current origin, read access to the response is allowed, otherwise an error is reported.

Compared with jsonp, CORS has the following advantages:

It not only supports GET requests, but also supports other requests such as POST

It can send and receive data using XMLHttpRequest, and Has a better error handling mechanism

How to solve the problem of cross-domain requests

Summary: The above is the entire content of this article, I hope it will be helpful to everyone

The above is the detailed content of How to solve the problem of cross-domain requests. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn