In cross-origin resource sharing (CORS), a web page can request resources from another origin, typically involving different domains, ports, or protocols. However, by default, browsers restrict such requests due to security concerns.
In the given scenario, the user is attempting a POST request from www.siteone.com to www.sitetwo.com using CORS. The error encountered suggests that there is a mismatch between the request and response headers.
To configure CORS properly, it's crucial to handle it carefully. The following PHP function provides a more comprehensive approach:
<code class="php">// Allow from any origin if (isset($_SERVER['HTTP_ORIGIN'])) { header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Max-Age: 86400'); // cache for 1 day } // Access-Control headers are received during OPTIONS requests if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); exit(0); } echo "You have CORS!";</code>
By replacing the original code with this enhanced function, the user successfully resolved the CORS issue. This approach ensures that all necessary headers are set appropriately, enabling cross-origin requests to work as intended.
The above is the detailed content of Why Is CORS Not Working in My PHP Application?. For more information, please follow other related articles on the PHP Chinese website!