首页 >web前端 >js教程 >如何预检跨源资源共享 (CORS) 的 HTTP 请求?

如何预检跨源资源共享 (CORS) 的 HTTP 请求?

Patricia Arquette
Patricia Arquette原创
2024-10-18 21:54:311051浏览

How to Preflight an HTTP Request for Cross-Origin Resource Sharing (CORS)?

CORS:预检 HTTPRequests

跨源资源共享 (CORS) 对跨域 HTTP 请求造成限制。为了解决这些挑战,可以采用预检请求。在这种情况下,预检请求涉及在发出实际请求之前向服务器发送 OPTIONS 请求。这允许服务器验证请求是否被允许并提供必要的权限。

如何预检请求

预检 HTTP 请求涉及发送 OPTIONS 请求带有特定的标头,指示实际请求所需的方法和标头。服务器使用授予或拒绝请求权限的标头进行响应。

服务器端预检响应

服务器应使用以下标头响应预检请求:

  • Access-Control-Allow-Origin: 允许发出实际请求的域。
  • Access-Control-Allow-Methods: 实际请求允许的方法。
  • Access-Control-Allow-Headers: 实际请求允许的标头。此标头不能为“*”。

客户端预检请求

在 jQuery 中,可以使用以下技术来预检请求:

<code class="javascript">$.ajax({
  url: yourUrl,
  type: 'OPTIONS',
  success: function(data, status) {
    // Extract and verify the preflight response headers
    var origin = data.getResponseHeader('Access-Control-Allow-Origin');
    var methods = data.getResponseHeader('Access-Control-Allow-Methods');
    var headers = data.getResponseHeader('Access-Control-Allow-Headers');
    // Proceed with the actual request only if permissions are granted
    if (origin === 'http://mydomain.com' && methods.indexOf('POST') !== -1 && headers.indexOf('X-Custom-Header') !== -1) {
      // Make the actual request
    } else {
      // Handle the error and deny the request
    }
  }
});</code>

通过实施这些更改,您可以确保跨域 HTTP 请求经过预检验证,并且无需浏览器干预即可继续。

以上是如何预检跨源资源共享 (CORS) 的 HTTP 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn