在跨域ajax调用中获取标头信息

时间:2015-06-10 12:05:13

标签: javascript jquery ajax cross-domain

我正在尝试通过对该URL进行ajax调用来验证图像URL是否仍然保留图像。一个问题是图像服务器在不同的域上,所以我在我的ajax调用中使用crossDomain:true属性。这是我到目前为止所尝试的:

function checkFunc(){
  $.ajax({ 
        url: 'https://www.google.co.in/images/srpr/logo11w.png', 
        dataType: 'image/png',
        crossDomain: true,
        timeout: 5000,
        error: function(e, status, settings){
            alert('ERROR: '+JSON.stringify(e));
        },
        success: function( e, xhr, settings ) {    
            alert('SUCCESS: '+JSON.stringify(e));
        }   
    });
}

但它不起作用。另外一个问题是图像不限于单一格式,即图像可以是png / jpg / gif或任何其他格式,因此我需要有更广泛的dataType来接受任何类型的图像。

我也试过使用jsonp,但是这给了我错误"拒绝执行脚本,因为它的Mime类型(image / jpeg)不可执行。

编辑:我无法从我的ajax函数运行服务器脚本,而ajax函数又调用跨域页面,如php getcontents

3 个答案:

答案 0 :(得分:1)

你可以做一件事,只需要设置Access-Control-Allow-Origin& Access-Control-Allow-Headers

 <add name="Access-Control-Allow-Origin" value="*" />
 <add name="Access-Control-Allow-Headers" value="Content-Type" />

如果您只想允许特定域,则可以使用域的特定值而不是*值

来实现

答案 1 :(得分:0)

您必须设置图像服务器以允许跨源请求。要做到这一点,你需要在服务器上设置一个标题,如下所示:

Header set Access-Control-Allow-Origin "*"

您可以将*替换为您的特定域名,实际上您应该这样做,否则任何人都可以在您的图像服务器上执行跨源请求。

答案 2 :(得分:0)

  • 'xhrFields'属性在XMLHttpRequest上设置其他字段。
  • 这可用于设置'withCredentials'属性 设置 如果您想将cookie传递给服务器,则将值设置为“true”。如果这 已启用,您的服务器必须使用标头响应 'Access-Control-Allow-Credentials:true'。

这对你有帮助