跨域请求被阻止:同源策略不允许在 http://........ 读取远程资源

Posted

技术标签:

【中文标题】跨域请求被阻止:同源策略不允许在 http://........ 读取远程资源【英文标题】:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://........ 【发布时间】:2016-12-04 10:15:44 【问题描述】:

我正在尝试主要通过使用 ajax 的 javascript 从 Web 应用程序与企业应用程序进行通信。我尝试了很多来解决这个问题,但没有成功。我在那里看到了几个在线 httppost 工具,我可以看到响应文本,但它并没有从我这里发生。每次我收到类似 “跨域请求被阻止:同源策略不允许读取位于http://url 的远程资源。(原因:CORS 标头‘Access-Control-Allow-Origin’缺失)”这样的消息时。

我的代码:

var url = "use_url";
var method = "POST";

var regid = "null";
var UNAME = "abcd089";
var PASSWORD = "abcd007*";
var forLogin = "10 112 " +UNAME+ " " + PASSWORD + " " + regid + " 01";
var async = true;

var request = new XMLHttpRequest();

request.open('POST', url, async);
request.onload = function()
            //HTTP response
            //if(request.readyState === 4 && request.status === 200)
            var status = request.status;
            var statusData = request.responseText;              

            console.log(status);
            console.log(statusData);
            console.log(request);

        //
;

request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
request.setRequestHeader("Cache-Control", "no-cache");

request.send(forLogin);

我正在寻找获取响应文本的解决方案。我在网上看到了一些解决方案,但他们都在谈论设置响应标头,但是一些在线 httppost 网站在数据和生成响应文本方面运行良好。我正在寻找 javascript 中的解决方案。

【问题讨论】:

【参考方案1】:

如果您在不同的域中,则 javascript 端不允许这样做,那么您需要从服务器端执行。

浏览器已阻止跨域,您无法使用 ajax 从 javascript 向非主机域发出任何请求。 如果您在 http://XXXX.com 上,则不能从 javascript 调用 http://YYYY.com 以进行发布请求

如果您对这两个域都有完全控制权,您可以更改服务器配置以允许该域访问资源,但这并不可取作为安全性..

您可以使用以下代码从服务器发出 http post 请求

URL url = new URL("your url");
  HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
  httpCon.setDoOutput(true);
  httpCon.setRequestMethod("POST");
  OutputStreamWriter out = new OutputStreamWriter(
      httpCon.getOutputStream());
  System.out.println(httpCon.getResponseCode());
  System.out.println(httpCon.getResponseMessage());
  out.close();

【讨论】:

谢谢杰伊什。您是否有任何示例可以从服务器端使用 servlet 作为两种应用程序的技术? 我添加了代码供您参考,这是基本的 java 代码,您可以使用它来调用外部 http 请求,但其他几个额外的库也提供了带有更多参数和配置的 http 请求。 谢谢杰伊什。你能告诉我如何在这里传递一个字符串吗?像字符串内容 = "abcd123 Hjkl007* null";作为一个帖子参数。 你可以为此发布单独的问题吗.. @Nahush Sarje 你可以从这个***.com/questions/4205980/…得到一些信息

以上是关于跨域请求被阻止:同源策略不允许在 http://........ 读取远程资源的主要内容,如果未能解决你的问题,请参考以下文章

Ajax 跨域请求被阻止:同源策略不允许读取远程资源

跨域请求被阻止:同源策略不允许在 http://127.0.0.1:8000/api/task-list/ 读取远程资源

跨域请求被阻止:同源策略不允许读取远程资源

跨域请求被阻止:同源策略不允许在 http://localhost:9200/test12/test3/_search?pretty 读取远程资源

Ajax:跨域请求被阻止:同源策略不允许读取远程资源

跨域请求被阻止:同源策略不允许在 https://localhost:3000/ 读取远程资源 [重复]