相关疑难解决方法(0)

尽管有标题,但Firefox的"跨源请求已被阻止"

我正在尝试制作一个简单的跨源请求,并且Firefox始终使用此错误阻止它:

跨源请求已阻止:同源策略禁止在[url]读取远程资源.这可以通过将资源移动到同一域或启用CORS来解决.[URL]

它在Chrome和Safari中运行良好.

据我所知,我已经在我的PHP上设置了所有正确的标题以允许它工作.这是我的服务器响应的内容

HTTP/1.1 200 OK
Date: Mon, 23 Jun 2014 17:15:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u8
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Request-Headers: X-Requested-With, accept, content-type
Vary: Accept-Encoding
Content-Length: 186
Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)

我尝试过使用Angular,jQuery和一个基本的XMLHTTPRequest对象,如下所示:

var data = "id=1234"
var request = new XMLHttpRequest({mozSystem: true})
request.onload = onSuccess;
request.open('GET', 'https://myurl.com' + '?' + data, true)
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
request.send()
Run Code Online (Sandbox Code Playgroud)

...它适用于除Firefox之外的所有浏览器.有人能帮忙吗?

javascript firefox cross-domain cors

100
推荐指数
6
解决办法
19万
查看次数

如何设置socket.io origin来限制与一个url的连接

我们有一个html站点和一个为该网站提供服务的node.js服务器.网站和服务器使用socke.io交换数据.我们在文档中找到了这个:

origin 默认为*:* 允许连接到Socket.IO服务器的原点.

我们的html.site已启用http://questionexample.com/page1.只有这个站点可以连接到我们的服务器.(但每个人都可以连接到该网站.)我们如何设置起源?

javascript node.js socket.io

13
推荐指数
3
解决办法
3万
查看次数

socket.io, 'Access-Control-Allow-Origin' 错误

我已经设置了一个带有套接字 io 转动的节点服务器,并尝试通过另一台服务器连接到它。但是,不同计算机上的某些浏览器会出现此错误并使其始终重新连接:

XMLHttpRequest 无法加载https://serverDomain.net:3000/socket.io/?EIO=3&transport=polling&t=Lo_SdiU。当请求的凭据模式为“包含”时,响应中“Access-Control-Allow-Origin”标头的值不得为通配符“*”。因此,不允许访问Origin ' https://www.differentServerDomain.fr '。XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

我的js配置:

var port = 3000;
var fs = require('fs');
var https = require('https');
var express = require('express');
var app = express();

var options = {
    key: fs.readFileSync('/etc/letsencrypt/live/devpeter.net/privkey.pem'),
    cert: fs.readFileSync('/etc/letsencrypt/live/devpeter.net/fullchain.pem')
};
var server = https.createServer(options, app);
var io = require('socket.io')(server);
io.origins('https://www.differentServerDomain.fr:* https://www.differentServerDomain.fr/wp-admin/index.php:*');

// start of server
server.listen(port, function(){
    console.log('listening on *: '+ port + "\n");
});
Run Code Online (Sandbox Code Playgroud)

我正在使用 node 8.0 和 socket io 2.2,您的帮助将不胜感激。

编辑:这是客户端代码:

<script src="https://serverDomain.net:3000/socket.io/socket.io.js"></script>
<script>
   var …
Run Code Online (Sandbox Code Playgroud)

javascript node.js cors socket.io

13
推荐指数
7
解决办法
4万
查看次数

CORS被node.js和socket.io阻塞

我最近开始学习node.js和socket.io.我遵循了一个socket.io的简单教程,在我的计算机上运行时一切正常.但是,我决定将客户端部件上传到服务器进行测试,这就是问题开始的地方.我想在Web主机上运行聊天客户端,并在我的计算机或其他主机上运行服务器.基本上,我计划在端口转发服务器,并让客户端在网页上运行.我打开我的端口向前移动它似乎正在工作,但我每次都在网页上收到错误.

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://24.151.51.34:3000/socket.io/?EIO=3&transport=polling&t=1437399007343-0. (Reason: CORS request failed).
Run Code Online (Sandbox Code Playgroud)

我一直在搞乱代码,希望在开始我自己的项目之前找到解决这个问题的方法,但是我无法找到方法.客户端代码是:

<!doctype html>
<html>
  <head>
    <title>Socket.IO chat</title>
    <style>
      * { margin: 0; padding: 0; box-sizing: border-box; }
      body { font: 13px Helvetica, Arial; }
      form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
      form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
      form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: …
Run Code Online (Sandbox Code Playgroud)

javascript sockets node.js cors

8
推荐指数
2
解决办法
6490
查看次数

套接字 IO 错误“对 XMLHttpRequest 的访问已被 CORS 策略阻止”

我的应用程序最近收到一个错误

“在‘ https://my-service-domain/socket.io/?EIO=3&transport=polling&t=M-eWtUQ ’从源‘ https://my-app-domain ’访问 XMLHttpRequest已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。”

当我连接到 socket.io 时。我还没有找到解决这个问题的方法,我将在下面的图片中详细描述,有没有人遇到过这个错误。

在此处输入图片说明

服务器配置:

var express = require('express');
var app = express();

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Headers", "Content-Type");
  res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");
  next();
});
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server, {log:false, origins:'*:*'});
Run Code Online (Sandbox Code Playgroud)

客户端配置:

var socket = io('https://my-service-domain', {transports: ['polling']});
socket.on(channel_id, function(data){
     // some code
});
Run Code Online (Sandbox Code Playgroud)

我尝试切换 websocket 连接选项var socket = io('https://my-service-domain', {transports: ['websocket']}),但出现错误

“WebSocket 连接到 'wss://my-service-domain/socket.io/?EIO=3& transport …

sockets websocket node.js express socket.io

7
推荐指数
3
解决办法
1万
查看次数

cross origin请求阻止了socket.io firefox

我在Firefox中遇到以下错误

"跨源请求被阻止:同源策略不允许在http://localhost/socket.io/读取远程资源?EIO = 3&transport = polling&t = 1422586440181-21.这可以通过将资源移动到同一域来解决或启用CORS."

我检查了其他堆栈溢出问题,但还没有成功.另请注意,最新的socket.io不支持io.set,我的服务器配置尝试失败.

Socket.io + Node.js跨源请求被阻止

如何设置socket.io origin来限制与一个url的连接

如何在Firefox上启用CORS?

我已经尝试将这些语句添加到我的服务器:

io.origins('http://localhost:3002')

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
Run Code Online (Sandbox Code Playgroud)

firefox node.js cors socket.io

6
推荐指数
0
解决办法
961
查看次数

在 Firefox 中运行 node.js 和 socket.io 时出现 CORS 错误

我在 apache 上使用 socket.io 运行 node.js。我让它在一个子域上运行(例如 - myapp.mydomain.com:8000),你可以看到我在不同的端口上运行它,以便我可以使用 myapp.mydomain.com 访问它。

在 chrome、Opera、IE 中一切正常,但 FF 失败并且出现跨域错误。

跨域请求被阻止:同源策略不允许在http://myapp.mydomain.com:8000/socket.io/?EIO=2&transport=polling&t=1429260923523-0读取远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。

有任何想法吗?

更新:

按要求添加了我的代码:

function handler(req, res) {
  fs.readFile('../index.html', function(err, data) {
    if (err) {
      console.log(err);
      res.writeHead(500);
      return res.end('Error loading client.html');
    }
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.writeHead(200);
    res.end(data);
  });
}
Run Code Online (Sandbox Code Playgroud)

javascript sockets firefox node.js

6
推荐指数
1
解决办法
2580
查看次数

socket.io 连接在生产环境中失败,在 localhost 中工作

我在 server.js 中有这个

//socket io config
const server = require('http').createServer(app)
const io = require('socket.io')(server)
io.on('connection', function (socket) {
  socket.on('SOCKET_COMMENT_RECEIVED', ({ notification }) => {
    io.emit(`SOCKET_COMMENT_RECEIVED`, notification)
  })
  //and many more
})
Run Code Online (Sandbox Code Playgroud)

在我的客户端(反应)

import io from 'socket.io-client'
const socket = io('localhost:3001') // working in localhost
Run Code Online (Sandbox Code Playgroud)

在我的产品中我做了这个检查

let socket = io('localhost:3001')
if(process.env.NODE_ENV === 'production') { socket = 
  io('https://api.example.com:3001') 
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?我不认为这是 cors 问题,因为我已经这样做了

app.use(cors({
  origin: true,
  credentials: true
}))
Run Code Online (Sandbox Code Playgroud)

我的 package.json 依赖项

"socket.io": "^2.1.1",
"socket.io-client": "^2.1.1",
Run Code Online (Sandbox Code Playgroud)

sockets node.js express socket.io netlify

6
推荐指数
1
解决办法
4783
查看次数

使用node、react和socket.io出现Socket.io cors错误

我们使用 CORS 来允许所有来源

app.use(cors());
Run Code Online (Sandbox Code Playgroud)

服务器运行在4000端口,客户端运行在3000端口

这是我的server.js代码

const cors = require("cors");
const http = require("http");
const socketIO = require("socket.io");

app.use(cors());

const port = process.env.PORT || process.env.DEFAULT_PORT;
console.log("port: ", port);
app.listen(port, () => {
  console.log(`App listening at ${port}...`);
});

const server = http.createServer(app);

const io = new socketIO(server, {
  transports: ["websocket"],

});
Run Code Online (Sandbox Code Playgroud)

反应js代码

  constructor(props) {
    super(props);
    try {
      this.socket = io("http://localhost:4000", { transport: ["websocket"] });

      this.socket.on("Chat-event", data => {
        console.log("socketdata", data);
      });
    } catch (error) {
      console.log("hiterror", error)
    }
  } …
Run Code Online (Sandbox Code Playgroud)

sockets node.js reactjs

0
推荐指数
1
解决办法
5773
查看次数