如何处理不安全的 XMLHttpRequest 端点 [重复]

Posted

技术标签:

【中文标题】如何处理不安全的 XMLHttpRequest 端点 [重复]【英文标题】:How to deal with insecure XMLHttpRequest endpoint [duplicate] 【发布时间】:2020-04-15 08:39:17 【问题描述】:

我对编码非常陌生,但我的网站有问题。我收到一条错误消息:

混合内容:“ajax-utils.js:34”处的页面混合内容:“https://daringtrifles.github.io/courserahtmlcssjavascript/module5realsol/index.html”处的页面是通过 HTTPS 加载的,但请求了不安全的 XMLHttpRequest 端点“http://davids-restaurant.herokuapp.com/categories.json”。此请求已被阻止;内容必须通过 HTTPS 提供

这是我的 AJAX 代码。请大家告诉我我的错误在哪里以及如何解决它们?

(function(global) 

  // Set up a namespace for our utility
  var ajaxUtils = ;


  // Returns an HTTP request object
  function getRequestObject() 
    if (window.XMLHttpRequest) 
      return (new XMLHttpRequest());
     else if (window.ActiveXObject) 
      // For very old IE browsers (optional)
      return (new ActiveXObject("Microsoft.XMLHTTP"));
     else 
      global.alert("Ajax is not supported!");
      return (null);
    
  


  // Makes an Ajax GET request to 'requestUrl'
  ajaxUtils.sendGetRequest =
    function(requestUrl, responseHandler, isJsonResponse) 
      var request = getRequestObject();
      request.onreadystatechange =
        function() 
          handleResponse(request,
            responseHandler,
            isJsonResponse);
        ;
      request.open("GET", requestUrl, true);
      request.send(null); // for POST only
    ;


  // Only calls user provided 'responseHandler'
  // function if response is ready
  // and not an error
  function handleResponse(request,
    responseHandler,
    isJsonResponse) 
    if ((request.readyState == 4) &&
      (request.status == 200)) 

      // Default to isJsonResponse = true
      if (isJsonResponse == undefined) 
        isJsonResponse = true;
      

      if (isJsonResponse) 
        responseHandler(JSON.parse(request.responseText));
       else 
        responseHandler(request.responseText);
      
    
  


  // Expose utility to the global object
  global.$ajaxUtils = ajaxUtils;


)(window);

【问题讨论】:

这能回答你的问题吗? "Mixed content blocked" when running an HTTP AJAX operation in an HTTPS page 【参考方案1】:

你的错误在这里:

request.open("GET", requestUrl, true);

requestUrlhttp://davids-restaurant.herokuapp.com/categories.json 我猜。您只需稍微更改该 URL。

更改您的请求网址

http://davids-restaurant.herokuapp.com/categories.json

https://davids-restaurant.herokuapp.com/categories.json.

只需在您的http 中添加一个“s” -> https 现在它应该可以工作了。

【讨论】:

谢谢!我现在出现另一条错误消息“ajax-utils.js:34 Access to XMLHttpRequest at 'file:///Library/WebServer/Documents/module-5-master/sn-ps/home-sn-p.html' CORS 策略已阻止来自原点'null':跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https。同样,第 34 行有问题。请帮忙!谢谢! 好的,你现在有一个 cors 错误。您使用什么后端服务器语言? php? javascript(node.js)?还是其他? 我建议使用axios。它简单且对 ajax 请求非常有用。 我现在正在使用 javascript 这不适用于 POST 请求。但适用于 GET AJAX 请求。

以上是关于如何处理不安全的 XMLHttpRequest 端点 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

NTILE() 如何处理不平衡的数据?

如何处理不受信任的服务 URL?

如何处理不抛出 catch 的 API 请求? (403 错误)

机器学习中如何处理不平衡数据?

HikariCP 如何处理不完整的 JDBC 事务?

Apache Spark 如何处理不适合内存的数据?