gpt4 book ai didi

jquery - 与本地服务器同源策略

转载 作者:行者123 更新时间:2023-12-01 07:11:18 26 4
gpt4 key购买 nike

我正在尝试在客户端上使用 JQuery 并在服务器上使用 node.js 运行基本的 Ajax 调用。客户端是从与处理 Ajax 请求的服务器相同的服务器加载的 - 但我收到了在客户端出现此错误:

“XMLHttpRequest 无法加载....请求的资源上不存在“Access-Control-Allow-Origin” header 。因此不允许访问 Origin ......。”

我想这里肯定没有违反同源政策吧?也许本地主机受到不同的对待?

服务器:

httpListen.createServer(function (req, res) {
....
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('_testcb(\'{"message": "Hello world!"}\')');
}

客户:

$.ajax({
url: "http://127.0.0.1:1337/",
data : {formType:"ajaxTest", key1:"val1", key2:"vall2"},
formType:"ajaxTest",
jsonpCallback: "_testcb",
cache: false,
timeout: 5000,
success: function(data) {
$("#textBox").text("replied");
},
error: function(jqXHR, textStatus, errorThrown) {
alert('error ' + textStatus + " " + errorThrown);
}
});

这是在第一个回复的指导方针之后写的: how to use jQuery ajax calls with node.js , 但我是仍然收到上述错误。

编辑:发现问题:使用 localhost 而不是 127.0.0.1,工作正常...

最佳答案

从你的问题中,我看到了三种可能性:

  1. Same Origin Policy不仅仅关心服务器,端口也必须相同(和协议(protocol))。因此,从端口 80 提供的页面无法向端口 1337 发送请求,除非您使用 Cross-Origin Resource Sharing .

  2. 或者,如果您从端口 1337(这是您用于 ajax 请求的端口)提供页面服务,请确保服务器使用相同的名称来加载页面并提出请求。请注意,出于 SOP 目的,127.0.0.1localhost 不被视为相同。

  3. 如果您从文件系统而不是服务器加载页面(例如,页面的 URL 以 file:// 开头,则需要加倍- 在文件资源管理器或其他东西中单击文件以将其打开),那么问题是几乎一切都不同,从协议(protocol)开始(file: != http:).

关于jquery - 与本地服务器同源策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26537436/

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