当前位置: 首页 > 知识库问答 >
问题:

XMLHttpRequest不能工作的COR

景仲渊
2023-03-14
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>AUDIO</title>
  </head>
  <body>
    <script type="text/javascript">
        function createCORSRequest(method, url) {
        var xhr = new XMLHttpRequest();
        if ("withCredentials" in xhr) {
          // XHR for Chrome/Firefox/Opera/Safari.
          xhr.open(method, url, true);
        } else if (typeof XDomainRequest != "undefined") {
          // XDomainRequest for IE.
          xhr = new XDomainRequest();
          xhr.open(method, url);
        } else {
          // CORS not supported.
          xhr = null;
        }
        return xhr;
      }

  // Helper method to parse the title tag from the response.
  function getTitle(text) {
    return text.match('<title>(.*)?</title>')[1];
  }

  // Make the actual CORS request.
  function makeCorsRequest() {
    // All HTML5 Rocks properties support CORS.
    var url = 'http://streaming.radionomy.com/VWClassicRock';

    var xhr = createCORSRequest('GET', url);
    if (!xhr) {
      alert('CORS not supported');
      return;
    }

    // Response handlers.
    xhr.onload = function() {
      var text = xhr.responseText;
      var title = getTitle(text);
      alert('Response from CORS request to ' + url + ': ' + title);
    };

    xhr.onerror = function() {
      alert('Woops, there was an error making the request.');
    };

    xhr.send();
  }

  makeCorsRequest();
</script>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>AUDIO</title>
  </head>
  <body>
    <audio src='http://streaming.radionomy.com/VWClassicRock' controls></audio>
  </body>
</html>

共有1个答案

邹华池
2023-03-14

XMLHttpRequest是如何工作的?

const data = '{"message":"hi there!"}'
const xhr = new XMLHttpRequest()
xhr.open('POST', endpointURL)
xhr.setRequestHeader('Content-type', 'application/json')
xhr.send(JSON.stringify(data))

首先,XMLHttpRequest对象执行一个OPTIONS调用,以了解EndPointUrl可用的方法。CORS报头也会从服务器返回。通过这些信息,XMLHttpRequest知道它是否可以执行POST调用。如果允许CORS,XMLHttpRequest将工作。

为了测试XMLHttpRequest调用,您可以在postman或rest客户端工具中执行选项调用,或者执行curl:

 curl -X OPTIONS -k -H 'Conte -Type: application/json' -i 'https://yourserver/path/hello' --data '{"message": "hello world"}'
curl -X POST -k -H 'Content-Type: application/json' -i 'https://yourserver/path/hello' --data '{"message": "world"}'
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST","GET","OPTIONS")
                .allowedHeaders("*")
                .allowCredentials(false).maxAge(3600);

    }
}
 类似资料:
  • 问题内容: 有谁知道为什么upload.onprogress在单独的功能上不能正常工作? 代码工作正常(进度条缓慢移动): 但是,如果我将其投入功能,它将无法正常工作: 在第二个代码上,进度条在文件上传完成后直接跳到100%,而不是在上传过程中很好地移到100% 因此,如果我将功能放进去,我已经尝试了提供的解决方案,它实际上可以工作。有没有办法把它放在函数之外? 问题答案: 通过调用函数本身,并将

  • 我怎样才能解决这个问题? 当我尝试时:

  • 它说不能解析符号AdRequest和不能解析adview。我做错了什么?在我的主活动文件中包括以下内容 此外,我还为build.gradle添加了以下内容 编辑 我现在知道问题出在哪里,但无法解决。我已经从项目结构中启用了Admob,它已经添加了 在大楼里。格雷德尔。我检查了一个横幅示例,示例在外部库中有播放服务,但它没有出现在我的应用程序中。

  • 我正试图在按下某个按钮时弹出一个警报对话框。我首先使用了Android Developer的示例代码而不是'这不起作用,所以我根据在这个站点上发现的情况进行了更改,但是现在我的程序在按下按钮后被迫停止。 就你的知识而言,这是在第二个不同于主要的活动中完成的。不确定这是否重要.... ‘ 碰撞日志:“03-25 19:34:24.373:E/AndroidRuntime(18828):致命异常:ma

  • 2,错误{org.apache.directory.server.LDAP.ldapserver}-ERR_171无法将LDAP服务(10,389)绑定到服务注册表。java.net.BindException:已在使用的地址 请帮忙谢谢 --------提示------------------- JAVA_HOME环境变量设置为/opt/java CARBON_HOME环境变量设置为/mnt/1

  • 我是JavaFX的新手。我用maven创建了JavaFX项目,并添加了所有依赖项。idea中的Project工作得很好,但当我在maven中构建它并尝试在目标文件夹中打开时,jar没有反应,它会给出以下错误。 (未知源)在com.sun.javafx.application.launcherImpl$$lambda$51/881058039。运行(Unkn自己的源)在com.sun.javafx.