首页 >web前端 >js教程 >如何在 JavaScript 中进行跨域 POST 请求,无需刷新页面,无需解析响应?

如何在 JavaScript 中进行跨域 POST 请求,无需刷新页面,无需解析响应?

Susan Sarandon
Susan Sarandon原创
2025-01-02 13:52:39190浏览

How Can I Make Cross-Domain POST Requests in JavaScript Without Page Refresh or Response Parsing?

使用 JavaScript 发送跨域 POST 请求

问题:

如何使用 JavaScript 执行跨域 POST 请求JavaScript 无需刷新页面或要求响应

解决方案:

了解跨源资源共享(CORS)

为了方便跨域通信, CORS 是在服务器上实现的标准。通过在服务器上设置响应标头,您可以授予特定域访问您自己域上资源的权限。

服务器端配置(使用 PHP):

  1. 在目标 PHP 文件(例如 postHere.php)中,包含以下内容code:
<?php
switch ($_SERVER['HTTP_ORIGIN']) {
    case 'http://from.com': case 'https://from.com':
    header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
    header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
    header('Access-Control-Max-Age: 1000');
    header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
    break;
}
?>

这允许来自 from.com 的脚本发出跨域 POST、GET 和 OPTIONS 请求。

客户端 AJAX 请求 (使用 jQuery):

  1. 设置您的 AJAX请求:
$.ajax({
  type: 'POST',
  url: 'https://to.com/postHere.php',
  crossDomain: true,
  data: '{&quot;some&quot;:&quot;json&quot;}',
  dataType: 'json',
  success: function(responseData, textStatus, jqXHR) {
    var value = responseData.someKey;
  },
  error: function (responseData, textStatus, errorThrown) {
    alert('POST failed.');
  }
});

处理:

  1. 浏览器发送 OPTIONS 请求以检查是否允许 POSTing。
  2. 服务器使用授予特定域权限的访问控制标头进行响应。
  3. 浏览器发送实际的 POST 请求。
  4. 服务器处理请求并返回响应。

注意事项:

  • 确保适当的安全性授予跨域访问权限时已采取预防措施。
  • 移动浏览器通常不支持跨域 POST。
  • 考虑双重请求的潜在开销和安全隐患。
  • 始终在响应中返回适当的 CORS 标头,而不仅仅是 OPTIONS 请求。

以上是如何在 JavaScript 中进行跨域 POST 请求,无需刷新页面,无需解析响应?的详细内容。更多信息请关注PHP中文网其他相关文章!

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