跨域请求被阻止:同源策略不允许在 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://........ 读取远程资源的主要内容,如果未能解决你的问题,请参考以下文章
跨域请求被阻止:同源策略不允许在 http://127.0.0.1:8000/api/task-list/ 读取远程资源
跨域请求被阻止:同源策略不允许在 http://localhost:9200/test12/test3/_search?pretty 读取远程资源