小编Dav*_*ein的帖子

什么会导致 HTTP 发回“400 OK”

当我将一些参数放入 URL 时,有时会收到错误,该错误应该是有效的请求,如“400 OK”。

相同的 URL 和参数在 99% 的情况下都可以工作,但我发现日志中突然出现错误。

这是由于某些因素而可能发生的晦涩的事情,还是我的应用程序特有的东西导致了奇怪的标题的混杂?如果前者没有答案,我猜是后者:)

更新

对于注释,“它”是编写的一个相对简单的 RESTful API。现在它几乎总是返回正确的标头,例如 400 和错误正文或 200 和正常正文。当错误标头到达 Web 客户端时,Web 客户端会使用收到的消息 ping 报告 URL,以便我们可以区分 Web 应用程序和移动应用程序之间的 API 错误。据我们所知,没有任何代码组合可以使这个“400 OK”地狱。但鉴于我们的代码混乱之外似乎不可能发生这种情况,因此我将进行更深入的研究。

更新2

好吧,我已经比以前更深入地研究了我们的框架,并与一些开发人员进行了交谈。

它通过 AJAX 调用 API 将信息返回给浏览器。

浏览器检测到“400 OK”并将其发送回我们的服务器,我们在服务器上收到了这个奇怪的报告。没有人亲眼目睹过这种情况的发生,但日志显示它正在发生。

我们的代码库中实际上有零个代码会返回 400 OK,因为我们的 HTTP 标头处理程序中唯一的 400 是“400 bad request”

我现在想知道我是否遇到了一些浏览器/jquery/ajax bug。

UPDATE 3(因为你不能获得太多信息)

我检查了浏览器如何发现问题。根据 jQuery $.ajax 的报告,失败时会触发回调。然后我们有这样的代码:

xhr.always(function() {
  var request = [ this.type, this.url, this.data ].join(' '),
      response = [ xhr.status, xhr.statusText, xhr.responseText ].join(' ');

  $.ajax({ 
    url   : REPORTING_URL,
    type  : …
Run Code Online (Sandbox Code Playgroud)

air jquery http http-headers

5
推荐指数
1
解决办法
9826
查看次数

为什么jQuery Mobile使用数据角色属性而不是类?

这可能是一个天真的问题,但我正在学习jQuery Mobile并且不确定为什么一切都与data-role属性相关.似乎即使角色与风格有关,他们也会使用data-roleclass

我理解,对于语义而言,data-role在很多情况下都有意义,但它似乎在这里被滥用了.那种查找也不会慢吗?

他们为什么要data-role课堂上使用?

感谢您的任何见解.

javascript jquery-mobile

5
推荐指数
1
解决办法
6366
查看次数

如何在 IE 中检测开窗器

我在堆栈上找不到任何好的答案 - 它们与对话框、文本编辑器有关,并且有人使用 VBScript。

我需要向开窗器发送消息。这在 FF、Chrome 和 Opera 中工作正常,但window.opener在 IE8-10 中为空。

我用来window.open让新窗口出现。

我什至尝试过这个:

var new_window = window.open( url, '_social', "height=600,width=600" );

if ( !new_window.opener ) {
  new_window.opener = window;
}
Run Code Online (Sandbox Code Playgroud)

打开的窗口只有一个脚本标签,如下所示:

<script type="text/javascript">
var data = {
  type : 'redirect',
  destination : '<?= $destination; ?>'
};
window.opener.postMessage( JSON.stringify( data ), '*' );
window.close();
</script>
Run Code Online (Sandbox Code Playgroud)

我打开控制台并记录了window.opener结果为空,所以我认为它与 DOM 是否准备好有任何关系。

该窗口在登陆带有 script 标记的页面之前会重定向几次。

javascript

5
推荐指数
1
解决办法
2549
查看次数

为什么 jest.isolateModules 没有按预期工作?

我想放弃使用,jest.resetModules因为我想重置两个模块,但在所有运行中保留一个模块。

我原来让事情正常工作的代码是这样的:

beforeEach(() => {
  jest.resetModules();
  require('hooks/useMyProvider');
  const useMyProvider = require('#/');
  api = useMyProvider(); // scoped above
})
Run Code Online (Sandbox Code Playgroud)

然后在每次测试中,我都会做这样的事情:

// Mock hook since we can't spy on a function
jest.doMock('#/hooks/useActive', () => {
  return () => {
    return [true]
  }
});

// re-require the component that requires useActive so it pulls latest mock
let MyComponent = require('#/components/MyComponent')

const { container } = render(<MyComponent />);
Run Code Online (Sandbox Code Playgroud)

我尝试重构为useMyProvider在文件顶部定义一次并jest.resetModules从 ; 中beforeEach删除

然后我这样做了:

let MyComponent;

jest.isolateModules(() => …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs react-hooks

5
推荐指数
0
解决办法
2093
查看次数

为什么重新运行时只用react-hooks-testing-libary更新一次props?

我有一个钩子useEffect。我注意到useEffect运行的次数不会超过两次,因为在一次rerender使用不同数据的调用之后,后续调用不会获取更新的数据。

export default function(lookForUsername) {
  const [dashboardHref, setDashboardHref] = useState(`https://www.example.com/`);

  useEffect(() => {
    // this is where I have code that i want to 
    // run on re-render, but it won't because it stops getting updated
  }, [lookForUsername]);


  return [dashboardHref];
}
Run Code Online (Sandbox Code Playgroud)

我的测试发生了这种情况

// this will log false, false on first run
const { rerender, waitForNextUpdate } = renderHook((lookForUsername=false, otherOption=false) => {
  console.log(lookForUsername, otherOption);
  return useMyHook(lookForUsername);
});

console.log('first re-render');
// this will make the console …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks react-hooks-testing-library

5
推荐指数
1
解决办法
1364
查看次数

为什么在使用预置环境节点时无法解析nodejs默认模块?

我正在为运行带有旧版Node的Chromium嵌入式框架(CEF)的应用程序编写插件。

我把webpack和babel放到了应用程序中。当我运行webpack时,它在具有const fs = require('fs');或任何其他默认节点程序包的文件上失败。我的代码和依赖项都在发生这种情况:

Module not found: Error: Can't resolve 'fs' in '/Users/me/repositories/myrepo/node_modules/chokidar'

.babelrc的如下:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": true
        }
      }
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的webpack配置实质上是:

module.exports = {
  entry: './src/main.jsx',
  mode: process.env.NODE_ENV,
  devtool: isDev ? 'eval-source-map' : false,
  output: {
    path: PLUGINDIR,
    filename: 'main.js',
    libraryTarget: 'umd'
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        options: {
          plugins: ['transform-react-jsx']
        }
      },
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader'] …
Run Code Online (Sandbox Code Playgroud)

node.js webpack babeljs

5
推荐指数
1
解决办法
98
查看次数

为什么我访问过的链接没有背景颜色?

似乎a:visited将无法在我的链接上显示背景颜色.

http://jsfiddle.net/davestein/D2srA/

我错过了什么超级简单的事情?

css background-color

4
推荐指数
1
解决办法
2553
查看次数

在Redux中使用Component状态是反模式吗?

我目前有我的商店设置.各种事物触发事件来更新商店,从而更新道具下游.当触发某些内容以在多个组件中进行更新时,这非常方便.

对于没有其他组件关心的事情,使用状态是反模式吗?

我基本上有一个组件是一个表单的页面.编辑表单更新状态(即选择一个选项会使其他选项更改).我想当用户点击保存时,我会触发商店的事件来获取新数据.点击取消只会返回到另一个页面,因此稍后返回将只是从商店状态重新填充.

那有意义吗?

javascript reactjs react-redux

4
推荐指数
1
解决办法
1421
查看次数

为什么在我的String值之后有括号?

我有这样的测试:

String dir = "/foo";
String fileName = "hello.txt";
String pathString = dir + "/" + fileName;
String text = "hello world!";
MyTask task = new MyTask();

FileSystem fs = Jimfs.newFileSystem(Configuration.unix());

Path foo = fs.getPath(dir);
Files.createDirectory(foo);
Path hello = foo.resolve(fileName);
Files.write(hello, ImmutableList.of(text), StandardCharsets.UTF_8);

task.setFileSystem(fs);
String fileValue = task.readFile(pathString);

// Doing this just shows "fail whale: hello world!"
// fail("fail whale: " + fileValue); 

// Failure from here adds brackets
assertEquals(text, fileValue);
Run Code Online (Sandbox Code Playgroud)

我这样失败了:

org.junit.ComparisonFailure: expected:<hello world![]> but was:<hello world![
]>
Run Code Online (Sandbox Code Playgroud)

如果我反转参数,我可以看到它 …

java junit

4
推荐指数
1
解决办法
723
查看次数

我可以在不等待的情况下捕获异步方法的异常吗?

如何在doAsyncThing不抛出异常的await情况下捕获异常?每次运行doAsyncThing都是幂等的,因此我只希望所有操作“同时”发生,然后结束该过程。我意识到即使我把 a 放在try/catch里面map,它实际上也不会在那里捕获它,因为那时它不在同一个线程中。

const promises  = entities.map(entity => {
  return entity.doAsyncThing();
});

await Promise.all(promises);
Run Code Online (Sandbox Code Playgroud)

javascript node.js es6-promise

4
推荐指数
1
解决办法
2476
查看次数