【问题标题】:Cross Domain Ajax call to get static Html? [duplicate]跨域 Ajax 调用以获取静态 Html? [复制]
【发布时间】:2016-11-20 17:42:53
【问题描述】:

我正在尝试进行跨域调用以获取一些 HTML,但我遇到了错误,请有人可以帮助我完成需要做的事情。下面是我得到的错误。

“错误”: 跨域请求被阻止:同源策略不允许读取位于http://test.com/webclient/widget/GetPromotionalBanner/%7bA301A86A-87CB-4F49-BF0E-A8EE355295BD%7d/Bright 的远程资源。 (原因:CORS 预检通道的 CORS 标头“Access-Control-Allow-Headers”中缺少令牌“access-control-allow-origin”)。

总是出现错误部分。

JAVASCRIPT 代码

(function ($) {
'use strict';
//==================================================
// DOCUMENT READY 
//--------------------------------------------------
function mytest(ss){
    console.log(ss);
}
$.ajax({
    type: "Get",
    url:"http://mytesturl.com",
    cache: "false",
    headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Request-Headers':'X-Custom-Header','Access-Control-Request-Method':"GET"},
    crossDomain : true,
    success: function(html) {
        alert("Cross Domain Call Success");
        console.log(html);
    },
    error:function(error){
        alert("Error Response :", error);
        console.log(error);
    }
});

//--------------------------------------------------
// end DOCUMENT READY...
//==================================================
}(jQuery));

Ajax 调用的响应头

访问控制允许原始... * 缓存控制私有 内容编码 gzip 内容长度 886 内容类型文本/html;字符集=utf-8 日期 2016 年 7 月 18 日星期一 07:46:49 GMT 服务器 Microsoft-IIS/8.5 设置 Cookie ASP.NET_SessionId=pe1r0iiklzj5ch3fuanhzlun;路径=/; HttpOnly SC_ANALYTICS_GLOBAL_COOKIE=a874641e69b948898f6dcb596a987fbc|假; expires=2026 年 7 月 18 日星期六 07:46:49 GMT;路径=/; HttpOnly 改变接受编码 X-AspNet-版本 4.0.30319 X-AspNetMvc-版本 5.2 X-Powered-By ASP.NET

请求标头 接受 text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 接受编码 gzip,放气 Accept-Language en-US,en;q=0.5 访问控制请求他...访问控制允许来源 访问控制请求我... GET 缓存控制 max-age=0 连接保持活动 托管 test.com 原点空 用户代理 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0

【问题讨论】:

  • 基本上所有你需要知道的都在错误信息中。由于您可能无法控制服务器,因此您应该寻找一种不同的方式来托管该 html。
  • 从服务器返回jsonp 数据。并使用dataType: "jsonp" 调用 Ajax。

标签: javascript jquery html ajax


【解决方案1】:
"Access-Control-Allow-Origin: *"

此标头必须在服务器上设置,而不是在 AJAX 请求中。

【讨论】:

  • 我已经在服务器端设置了标头。
  • 尝试在服务器 'Access-Control-Allow-Headers', 'Content-Type,*' 上设置此标头
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 2011-06-19
  • 2020-05-29
  • 2013-06-17
  • 2011-02-03
  • 2010-10-13
  • 1970-01-01
相关资源
最近更新 更多