Windows Security dialog window pops up

未关闭
#1,607 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
javascript, node.js, react, webpack
领域
networking

调研方向

未指定任何仓库文件或测试。首先重现对 localhost:3030/api/notifications 的请求,并检查与 401 响应和 www-authenticate 标头相关的代理配置;完成标准是在开发过程中不再出现 Windows Security 对话框。

由索引模型根据 Issue 内容生成。

描述

Description of what the bug is

We are developing at Windows 10. Our backend is ASP.NET Core 3.1 MVC

Windows Security dialog window pops up while I am developing an application through React. It is really annoying. We have to refresh page.

At first, this image is shown:
enter image description here

Then the above dialog window is replaced by the following dialog window. It requires smart card credentials:

enter image description here

Settings of our application

package.json looks like this:

"devDependencies": {
	"@babel/cli": "7.14.3",
	"@babel/core": "7.14.3",
	"@babel/plugin-proposal-decorators": "7.14.2",
	"@babel/plugin-transform-runtime": "7.8.3",
	"@babel/preset-env": "7.14.4",
	"@babel/preset-react": "7.13.13",
	"@babel/preset-typescript": "7.13.0",
	"@testing-library/jest-dom": "^5.16.2",
	"@testing-library/react": "^11.2.7",
	"@types/jest": "^27.5.1",
	"@types/node": "14.17.1",
	"@types/react": "17.0.8",
	"@types/react-dom": "17.0.5",
	"@types/webpack": "5.28.0",
	"@typescript-eslint/eslint-plugin": "4.25.0",
	"@typescript-eslint/parser": "4.25.0",
	"agentkeepalive": "4.2.1",
	"axios-mock-adapter": "^1.21.1",
	"babel-loader": "8.2.2",
	"css-loader": "5.2.6",
	"eslint": "7.27.0",
	"eslint-config-prettier": "8.3.0",
	"eslint-plugin-prettier": "3.4.0",
	"eslint-plugin-react": "7.23.2",
	"express": "4.17.1",
	"file-loader": "6.2.0",
	"html-webpack-plugin": "5.3.1",
	"husky": "6.0.0",
	"image-webpack-loader": "7.0.1",
	"jest": "^27.5.1",
	"lint-staged": "11.0.0",
	"prettier": "2.3.0",
	"react-hot-loader": "4.13.0",
	"rimraf": "3.0.2",
	"style-loader": "2.0.0",
	"ts-jest": "^27.1.3",
	"typescript": "4.3.2",
	"webpack": "5.38.1",
	"webpack-cli": "4.7.0",
	"webpack-dev-server": "3.11.2",
	"webpack-merge": "5.7.3"
},
"dependencies": {
	"@hot-loader/react-dom": "17.0.1",
	"@svgr/cli": "6.2.1",
	"@types/lodash": "4.14.170",
	"antd": "4.16.2",
	"axios": "^0.27.2",
	"classnames": "^2.3.1",
	"dotenv": "^16.0.1",
	"lodash": "4.17.21",
	"mobx": "6.3.2",
	"mobx-react": "7.2.0",
	"moment": "2.29.1",
	"process": "0.11.10",
	"react": "17.0.2",
	"react-base-table": "1.12.0",
	"react-dnd": "14.0.2",
	"react-dnd-html5-backend": "14.0.0",
	"react-dom": "17.0.2",
	"react-router-dom": "6.2.1",
	"react-sortable-hoc": "2.0.0",
	"ts-loader": "9.2.3"
}

In addition, we are using proxy. The settings are applied from this official React docs.

Moreover, we are using agentkeepalive.

Config of proxy file looks like this:

// development config
require('dotenv').config()
const package = require('../../package.json')
const { merge } = require('webpack-merge')
const webpack = require('webpack')
const commonConfig = require('./common')
const agent = require('agentkeepalive')

module.exports = (webpackConfigEnv, argv) =>
	merge(commonConfig(argv), {
		mode: 'development',
		entry: [
			'react-hot-loader/patch', // activate HMR for React
			'webpack-dev-server/client?http://localhost:3030', 
			'webpack/hot/only-dev-server',
			'./index.tsx', // the entry point of our app
		],
		devServer: {
			port: 3030,
			hot: true, // enable HMR on the server
			historyApiFallback: true,
			proxy: {
				'/api/*': {
					target: argv.env.mock ? '' : process.env.API_URL,
					secure: false,
					changeOrigin: true,
					agent: new agent({
						maxSockets: 100,
						keepAlive: true,
						maxFreeSockets: 10,
						keepAliveMsecs: 100000,
						timeout: 6000000,
						freeSocketTimeout: 90000, // free socket keepalive for 90 seconds
					}),
					onProxyRes: (proxyRes) => {
						var key = 'www-authenticate'
						proxyRes.headers[key] =
							proxyRes.headers[key] && proxyRes.headers[key].split(',')
					},
				},
			},
		},
		devtool: 'cheap-module-source-map',
		plugins: [
			new webpack.HotModuleReplacementPlugin(), // enable HMR globally
			new webpack.DefinePlugin({
				'process.env.appVersion': JSON.stringify(package.version),
				'process.env.isMockMode': JSON.stringify(argv?.env?.mock),
				'process.env.isDevelopment': true,
			}),
		],
	})

The current behavior

Windows Security dialog window sometimes pops up while I am developing an application through React. It is really annoying. We have to refresh page

The expected behavior

Windows Security dialog window sometimes DOES NOT POP UP while we are developing an application through React.

What we tried

We tried to set this option of axios, nevertheless the "Sign in" still pops up

axios.defaults.withCredentials = true;

UPDATE:

This is one of the URL that can return the 401 response with www-authenticate header-key:

 http://localhost:3030/api/notifications

Moreover, sometimes other methods can return 401 response. It is not always the same method return 401 response.

enter image description here

主要语言
JavaScript
星标
14.1k
派生
2k
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

http-party/node-http-proxy 的其他 Issue

查看 http-party/node-http-proxy 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。