javascript - crossdomain.xml 配置

标签 javascript ajax cross-domain

我必须使用 ajax 从 javascript 调用 Web 服务:

$.ajax({
    type: "GET",
    url: "http://[REMOTE-SERVER-IP]:8080/api/service",
    contentType: "application/jsonp",   
    crossDomain: true,
    success: successFunc,
    error: errorFunc
});

我读到要授予对该方法的访问权限,必须在服务器 http://[REMOTE-SERVER-IP]:8080/crossdomain.xml 中创建“crossdomain.xml”:

<cross-domain-policy>
   <allow-access-from domain="[SERVICE-CALLER-IP]"/>
</cross-domain-policy>

但是在这样做之后,当我尝试调用该方法时,我从 javascript 调试器中得到了这个错误:

XMLHttpRequest cannot load http://[REMOTE-SERVER-IP]:8080/[URL]. Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin

我做错了什么?

非常感谢!!!

最佳答案

您可以在此处选择两个选项,并且都假定您可以访问服务器。

  • 第一个方案是在请求url中添加callback=?参数,修改服务器响应。服务器应按以下格式将回调函数添加到响应中

    callback_function_coming_from_url([your_server_response])

  • 第二个选项是将 Access-Control-Allow-Origin: * header 添加到您的服务器响应中。或者您可以指定地址,如 Access-Control-Allow-Origin: [your_client_address]

我更喜欢选项 2,因为它是完成任务的便捷方式,而且您可以控制服务器响应,比选项 1 安全得多。

您可以从 CORS 获得更多信息

关于javascript - crossdomain.xml 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13394368/

相关文章:

javascript - 访问 td with class on row open

jquery - 为什么jquery泄漏内存如此严重?

jquery - 是否可以强制 jQuery 对启用了 gzip/deflate 的 URL 进行 AJAX 调用?

javascript - toLowerCase、数组、Object.keys、查找和 Flow 语法

javascript - Angular 5多路由模块

javascript - Google 图表刷新卡住页面/div + 内存不足

ajax - 没有数据参数的 jQuery PUT/POST ajax CORS 请求

google-analytics - 多个 Universal Analytics 和 Google Tag Manager 自动事件和跨域跟踪

跨子域的 PHP session

javascript - 访问匿名函数中的对象值