gpt4 book ai didi

ajax - XMLRPC 请求中的访问控制允许来源问题

转载 作者:行者123 更新时间:2023-11-28 01:43:55 43 4
gpt4 key购买 nike

我正在使用 HTML5 + Phonegap 进行移动应用程序开发。目前正在使用 XMLRPC 开发移动应用程序,并且运行良好。 (Android 和 iOS)

我需要在浏览器中运行与网站 相同的应用程序。 (使用 HTML5)。但是当我试图在网站上运行我的应用程序时,我收到了这个错误:

XMLHttpRequest cannot load 'Client' URL'. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost <http://localhost/>' is therefore not allowed access. 

当搜索专家说使用 JSONP 时。但是我可以使用相同的 XMLRPC 方法吗?

例如;

出于登录目的,我正在使用;

$.xmlrpc({
url: 'http://clienturl/xmlrpc/common',
methodName: 'login',
params: [Database_name','user_name','Password'],
success: function(response, status, jqXHR) {
alert('success'); },
error: OnError
});

它作为移动应用程序运行良好。

但是当我尝试作为网站运行时出现 Access-Control-Allow-Origin 跨域问题。

我该如何解决这个问题?

最佳答案

默认 SOP (same origin policy)允许跨源请求,但它会阻止接收这些请求的响应。错误消息中的 Access-Control-Allow-OriginCORS (cross-origin resource sharing) header 。它告诉浏览器您允许通过从另一个域(您的 XMLRPC 客户端的域)发送请求来读取一个域(您的 XMLRPC 服务器的域)的响应。因此,如果您想使用 AJAX 调用它,则必须从您的服务器发回 CORS 允许 header 。

注意:CORS 在旧浏览器中不可用。

可能的解决方案:

  • 如果您从 http://localhost 调用 http://clienturl/xmlrpc/common 那么

    response.header('Access-Control-Allow-Origin', "*")

    是一个不太安全的解决方案:Origin http://localhost is not allowed by Access-Control-Allow-Origin但是您始终可以为您的客户端添加另一个主机名(例如 http://client.xml.rpc ),例如通过 Windows,您可以修改主机文件并使用 IIS 服务器添加绑定(bind)。

    我不推荐此解决方案,因为它存在允许凭据 header 的安全风险。

  • 另一个更安全的选择是列出允许的主机,检查您从哪个主机收到实际请求,然后发回正确的 header :

    if (allowedHosts.contains(request.host))
    if (request.host== "http://localhost")
    response.header('Access-Control-Allow-Origin', "null");
    else
    response.header('Access-Control-Allow-Origin', request.host);
    else
    response.header('Access-Control-Allow-Origin', server.host);

    这是针对多个主机的正确解决方案,因为如果您允许 * 的凭据,那么每个人都将能够读取和写入已登录用户的 session 。

    通过 http://localhostfile:/// IRI,您必须使用 null 来源。我不确定其他协议(protocol),我想在当前的浏览器中你也必须使用它们的 null origin。

关于ajax - XMLRPC 请求中的访问控制允许来源问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24008707/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com