首页 > 解决方案 > 尝试从 ajax 或浏览器调用 azure 搜索的自定义搜索分析器时出现 CORS 策略错误

问题描述

尝试从 ajax 或浏览器调用 azure 搜索的自定义搜索分析器时出现 CORS 策略错误

我在 azure 帐户上启用了 azure 搜索服务。尝试使用来自客户端调用或 ajax 的 azure search 搜索查询,这非常顺利。我有一些要求在搜索实际搜索文本之前分析搜索查询,所以我创建了一个自定义分析器,当我尝试从浏览器或 ajax 调用时,我在浏览器上收到 CORS 策略错误。

已经尝试过:我已经为索引启用了 CORS,我在其中创建了自定义分析器我使用了 npm 库,该库是 azure-search.min.js,具有调用分析器(client.testAnalyzer)的功能:https://www.npmjs .com/package/azure-search-client

   //Sample 1:
  var index2 = AzureSearch({
                          url: k2,
                          key: k1,
                          version: "2019-05-06"
                 });
    var analyzerdata = {
        "text": searchTextData,
        "analyzer": sessionStorage.getItem('analyz')
      }
    index2.testAnalyzer("fastampsearchindex", analyzerdata, function (err, 
    tokens) {
        if (!isNullorEmpty(tokens)) {
            //phrases = data.map(x=>x.token);
        }
     });

   //Sample 2:
     var urlTokenizer="https://mysearchurl.search.windows.net/indexes/indexname/analyze?api-version=2019-05-06";
     var analyzerdata = {
        "text": searchTextData,
        "analyzer": sessionStorage.getItem('analyz')
    }
      $.ajax({
        type: "POST",
        url: url2,
        dataType: 'json',
        crossDomain:true,
        data: analyzerdata,
        headers: {
            "api-key": k1,            
            "Content-Type":"application/json"            
        },
        success: function (response) {
            console.log(response);            
        },
        error: function (xhr, status, message) {
            $('.loader').css('display', 'none');
            var err = "Error " + " " + message;
            if (xhr.responseText && xhr.responseText[0] == "{")
                err = JSON.parse(xhr.responseText).Message;
            toastr.warning(err);
        }
      });

应从浏览器而不是应用程序调用分析器,以避免通过托管应用程序的 Web 应用程序服务往返于 azure 搜索服务

标签: javascriptazuresearchluceneanalyzer

解决方案


推荐阅读